我该如何结束Tkinter程序?假设我有这段代码:
from Tkinter import * def quit(): # code to exit root = Tk() Button(root, text="Quit", command=quit).pack() root.mainloop()
我该如何定义quit
退出应用程序的功能?
您应该使用destroy()
关闭tkinter窗口.
from Tkinter import * root = Tk() Button(root, text="Quit", command=root.destroy).pack() root.mainloop()
说明:
root.quit()
上述线只是跳过的root.mainloop()
即root.mainloop()
将仍然在背景如果运行quit()
被执行的命令.
root.destroy()
虽然destroy()
命令消失root.mainloop()
即root.mainloop()
停止.
因此,您只是想退出程序,因此您应该使用root.destroy()
它,因为它将停止mainloop()
.
但是如果你想运行一些无限循环并且你不想破坏你的Tk窗口并想要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
def quit() root.quit()
要么
def quit() root.destroy()
import Tkinter as tk def quit(root): root.destroy() root = tk.Tk() tk.Button(root, text="Quit", command=lambda root=root:quit(root)).pack() root.mainloop()
退出Python程序的常用方法:
sys.exit()
(您也可以将退出状态传递给该状态)或
raise SystemExit
在Tkinter程序中可以正常工作。
我想你错误地理解了Tkinter的退出功能.此功能不需要您定义.
首先,您应该按如下方式修改您的函数:
from Tkinter import * root = Tk() Button(root, text="Quit", command=root.quit).pack() root.mainloop()
然后,您应该使用'.pyw'后缀来保存这些文件并双击'.pyw'文件来运行您的GUI,这次,您可以通过单击Button结束GUI,您也可以找到没有令人不快的DOS窗口.(如果运行'.py'文件,则退出函数将失败.)