我是python的新手,正在尝试开发一个webcrawler应用程序。目前,我没有收到任何错误消息,但是运行代码时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()
预期结果是出现带有退出并继续进行到第二页的项目的窗口。实际结果是窗口没有出现。
答案 0 :(得分:0)
command=
期望函数名称不包含()
-所谓的“回调”-当您按下按钮时,mainloop
将获得该名称并使用()
来运行它。
但是您有command=quit()
,因此它在启动和退出程序中执行quit()
。
您需要
command=quit
您可以使用app.destroy
而不是quit
来通知窗口您要结束程序,它应在结束程序之前关闭窗口。