2013-03-14 50 views
0

我用Tkinter创建一个窗口。当我点击退出按钮时,窗口显示exe停止工作。有谁能告诉我为什么会发生这种情况?我认为问题在于self.quit,但我不知道原因。Tkinter退出按钮让exe无响应

这是代码。

from Tkinter import * 
class App(Frame): 
    def __init__(self, master = None): 
     Frame.__init__(self, master) 
     self.pack() 
     self.createWidgets() 
    def createWidgets(self): 
     self.Quit = Button(self, text = "QUIT", command = self.quit) 
     self.Quit.pack(side = LEFT) 

root = Tk() 
app =App(master = root) 
app.mainloop() 
+0

我不知道如果这些会有所帮助,但你并不需要'主='在倒数第二行,并尝试把命令lambda表达式内(拉姆达:self.quit)。这有助于我在过去发生奇怪的错误。 – ApproachingDarknessFish 2013-03-14 05:37:46

+0

@ValekHalfHeart:lambda是没有必要的,而你对“怪异错误”的陈述给人的印象是Tkinter是非确定性或flakey,不是。 Lambda并不神奇,不能解决神秘的错误。 – 2013-03-14 11:15:06

+0

@BryanOakley这不值得争论,但它确实修复了我的错误。尽管我对Tkinter并不是很有经验。如果使用错误,完美可靠的软件仍然会产生“奇怪的错误”。 – ApproachingDarknessFish 2013-03-14 23:32:00

回答

0

在退出按钮,您呼叫的Framequit()方法。取而代之,您需要在根元素上调用destroy()以正确完成主循环。

self.Quit = Button(self, text = "QUIT", command = self.master.destroy) 
+0

谢谢,我添加了一个root.destory()来完成主循环。 – Finix 2013-03-14 17:10:12