from TKinter import *
class Ui(Frame):
def __init__(self)
Frame.__init__(self, None)
self.grid()
bquit=Button(self, text="Quit", command=self.quit_pressed)
bquit.grid(row=0, column=0)
def quit_pressed(self):
self.destroy()
app=Ui()
app.mainloop()
当我按下“退出”按钮时,为什么这个Tkinter程序没有正确结束?
答案 0 :(得分:4)
使用self.destroy()你只是破坏Frame而不是顶级容器,你需要做self.master.destroy()才能正确退出
答案 1 :(得分:3)
这不起作用的原因是因为您使用了错误的方法来结束quit_pressed中的程序。你现在正在做的是杀死自我框架,而不是根框架。自我框架是一个新的框架,你已经网格化到根框架中,因此当你杀死自我框架时,你不会杀死根框架。由于我的打字风格,这可能听起来令人困惑,所以让我举一个例子。
目前,你有
def quit_pressed(self):
self.destroy() #This destroys the current self frame, not the root frame which is a different frame entirely
您可以通过将此功能更改为
来解决此问题def quit_pressed(self):
quit() #This will kill the application itself, not the self frame.