📅  最后修改于: 2023-12-03 15:34:05.314000             🧑  作者: Mango
在Python中使用Tkinter创建GUI界面时,如何在程序中安全地关闭窗口是非常重要的。下面为大家介绍几种常用的关闭窗口的方法。
import tkinter as tk
def close_window():
root.destroy()
root = tk.Tk()
button = tk.Button(root, text="关闭", command=close_window)
button.pack()
root.mainloop()
上述代码中,close_window()
函数使用destroy()
方法关闭窗口,该方法会立即终止Tkinter事件循环并且销毁所有控件。因此,这种方法是当前最快速、最可靠的方式来关闭窗口。
import tkinter as tk
def close_window():
root.quit()
root = tk.Tk()
button = tk.Button(root, text="关闭", command=close_window)
button.pack()
root.mainloop()
在这种情况下,close_window()
函数使用quit()
方法关闭窗口。这种方法类似于destroy()
方法,但不会立即销毁所有控件,它会等待事件循环空闲时自动销毁所有控件。
请注意,如果您在程序的其他地方使用了tk.mainloop()
,或者其他部分需要窗口保持打开状态以便继续运行,那么使用quit()
方法可能会导致意外的结果。
另一种关闭窗口的方法是使用wm_protocol()
方法,并使用WM_DELETE_WINDOW
协议让操作系统通知窗口应该如何关闭。
import tkinter as tk
def on_closing():
if tk.messagebox.askokcancel("Quit", "是否关闭窗口?"):
root.destroy()
root = tk.Tk()
root.protocol("WM_DELETE_WINDOW", on_closing)
root.mainloop()
在这种情况下,on_closing()
函数会在程序关闭窗口后执行。如果用户确认关闭窗口,则使用destroy()
方法关闭窗口,否则什么也不做。
需要注意的是,在这种方法中,窗口关闭的请求需要通过用户操作来完成。如果您必须在程序的其他部分关闭窗口,则应该使用destroy()
或quit()
方法。
以上是几种常用的关闭Python tkinter GUI窗口的方法。其中,在大多数情况下,使用destroy()
方法是最简单、最可靠的方式来关闭窗口。但是,如果您必须在程序的其他地方等待窗口关闭请求,则使用wm_protocol()
方法可能是更合适的方式。