python - tkinter 窗口不显示
问题描述
我是 python 新手,正在尝试开发一个网络爬虫应用程序。目前,我没有收到任何错误消息,但是运行代码时不会显示 gui。任何帮助表示赞赏。
我已经在 stackoverflow 上搜索了类似的问题,但可以找到任何匹配的内容。
import tkinter as tk
from tkinter import ttk
LARGE_FONT=("Helvetica",12)
class MMA_fighters(tk.Tk):
def __init__(self,*args,**kwargs):
tk.Tk.__init__(self,*args,**kwargs)
tk.Tk.wm_title(self,"Mixed Martial Arts Fighters")
container =tk.Frame(self)
container.pack(side="top",fill="both",expand="true")
container.grid_rowconfigure(0,weight=1)
container.grid_columnconfigure(0,weight=1)
self.frames={ }
for F in (StartPage,MainPage):
frame=F(container,self)
self.frames[F]=frame
frame.grid(row=0,column=0)
self.show_frame(StartPage)
def show_frame(self,cont):
frame=self.frames[cont]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self,parent,controller):
tk.Frame.__init__(self,parent)
label=ttk.Label(self,text="Mixed Martial Arts Fighters", font=LARGE_FONT)
label.pack(pady=10, padx=10)
label=ttk.Label(self,text="Select 'Continue' for more information on your favorite MMA fighter", font=LARGE_FONT)
label.pack(pady=10, padx=10)
button1=ttk.Button(self,text="Continue",command=lambda :controller.show_frame(MainPage))
button1.pack()
button2=ttk.Button(self,text="Exit",command=quit())
button2.pack()
class MainPage(tk.Frame):
def __init__(self,parent,controller):
tk.Frame.__init__(self,parent)
label=ttk.Label(self,text="Fighter",font=LARGE_FONT)
label.pack(pady=10,padx=10)
app=MMA_fighters()
app.mainloop()
预期的结果是出现退出并继续项目进入第二页的窗口。实际结果是窗口没有出现。
解决方案
command=
期望函数的名称没有()
- 所谓的“回调” - 当您按下按钮时,mainloop
将获得该名称并用于()
运行它。
但是你有command=quit()
所以它quit()
在启动和退出程序时执行。
你需要
command=quit
您可以使用app.destroy
而不是quit
通知窗口您要结束程序,并且它应该在结束程序之前关闭窗口。
推荐阅读
- javascript - 如何控制台.log 下拉菜单中的属性?
- html - Html 视频背景不适用于 Ionic 框架上的 iOS
- kotlin-coroutines - 单元测试 Kotlin Flows 和 toList()
- javascript - 如何修复内容安全策略错误节点应用程序
- rust - 在 Rust 中将成员推入 Vec 的 Reducer
- html - 如何将 div 设置为与 h1 相同的样式?
- shiny - 需要帮助为物理课编写“向心力”应用程序
- python - 尝试在 python cli 上导入 db 变量时,Flask Sqlalchemy 抛出错误
- function - 如果函数没有针对特定情况返回整数,我可以在函数中使用 return 1、return 2 或任何其他整数而不是 return 0 吗?
- arrays - 在 Google 电子表格中混合 2 列