Python Tkinter应用程序无法正常退出

时间:2011-05-06 19:34:09

标签: python tkinter

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程序没有正确结束?

2 个答案:

答案 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.