[英]Check when tkinter window closes
from tkinter import *
root = Tk()
root.geometry("400x400")
if not 'normal' == root.state():
print('just closed')
root.mainloop()
我想檢查這個 tkinter window 是否關閉, print('just closed')
是否被執行。 我也嘗試過使用 while 循環來執行此操作,但這不起作用,因為它沒有到達root.mainloop()
。
還有另一種方法可以檢測 window 何時關閉,即將 function 綁定到<Destroy>
事件。 但是,對於Tk
小部件(例如,與Frame
或Button
不同), .bind()
也綁定到所有小部件的孩子,因此只需使用
root.bind("<Destroy>", lambda event: print('just closed'))
不會產生預期的結果。 實際上,將打印“剛剛關閉”以銷毀 window 中的每個小部件。 為了避免這種情況,我們可以檢查觸發事件的小部件確實是主要的 window:
def on_destroy(event):
if event.widget != root:
return
print("just closed")
這是一個例子:
import tkinter as tk
root = tk.Tk()
tk.Label(root, text="Some text").pack(padx=10, pady=10)
tk.Button(root, text="Quit", command=root.destroy).pack(padx=10, pady=10)
def on_destroy(event):
if event.widget != root:
return
print("just closed")
root.bind("<Destroy>", on_destroy)
root.mainloop()
僅將 print 語句放在mainloop()
之后
from tkinter import *
root = Tk()
root.geometry("400x400")
root.mainloop()
print('just closed')
我在這里找到了另一個解決方案:
from tkinter import *
root = Tk()
root.geometry("400x400")
root.protocol("WM_DELETE_WINDOW", lambda: print('just closed'))
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.