如何关闭 tkinter 窗口?

新手上路,请多包涵

如何结束 Tkinter 程序?假设我有这个代码:

 from Tkinter import *

def quit():
    # code to exit

root = Tk()
Button(root, text="Quit", command=quit).pack()
root.mainloop()

我应该如何定义 quit 函数来退出我的应用程序?

原文由 Matt Gregory 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

您应该使用 destroy() 关闭 Tkinter 窗口。

 from Tkinter import *
#use tkinter instead of Tkinter (small, not capital T) if it doesn't work
#as it was changed to tkinter in newer Python versions

root = Tk()
Button(root, text="Quit", command=root.destroy).pack() #button to close the window
root.mainloop()


解释:

 root.quit()

上面的行只是 绕过root.mainloop() ,即 root.mainloop() 如果执行了 quit() 命令,仍然会 在后台 运行。

 root.destroy()

虽然 destroy() 命令消失了 root.mainloop() ,即 root.mainloop() 停止。 <window>.destroy() 完全 破坏并 关闭 窗口。

因此,如果您想完全退出并关闭程序,您应该使用 root.destroy() ,因为它会停止 mainloop() 并破坏窗口及其所有小部件。

但是如果你想运行一些无限循环并且不想破坏你的 Tkinter 窗口并且想在 root.mainloop() 行之后执行一些代码,你应该使用 root.quit() 。例子:

 from Tkinter import *
def quit():
    global root
    root.quit()

root = Tk()
while True:
    Button(root, text="Quit", command=quit).pack()
    root.mainloop()
    #do something

请参阅 root.destroy() 和 root.quit() 有什么区别? .

原文由 aki92 发布,翻译遵循 CC BY-SA 4.0 许可协议

def quit()
    root.quit()

要么

def quit()
    root.destroy()

原文由 Matt Gregory 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题