Вы должны назначить функцию пересечению окна, которая установит переменную (т. Е. tk_open
), и затем вы можете использовать ее для выполнения root.update()
только тогда, когда окно еще существует.
Код на основе Tkinter: Catching Window Deletion на effbot.org
Вы можете использовать root.protocol()
или root.bind()
- читайте больше на effbot.org
import tkinter as tk
def _delete_window():
global tk_open
print("delete_window")
tk_open = False
root.destroy()
def _destroy(event):
global tk_open
print("destroy")
tk_open = False
root = tk.Tk()
root.protocol("WM_DELETE_WINDOW", _delete_window)
#root.bind("<Destroy>", _destroy)
tk_open = True
while tk_open:
root.update()
Возможно, в вашем коде вынужно будет установить running == False
вместо использования tk_open
.