Вот фрагмент кода, который ставит обратный вызов в очередь с Tk.after
, а затем разрушает окно, прежде чем обратный вызов может быть выполнен:
import tkinter as tk
win = tk.Tk()
win.after(0, win.destroy)
win.after(200, lambda: None)
win.mainloop()
Запуск этого кода обычно не приводит к выводу:
Aran-Fey@DESKTOP-SJGQDQ8 /d/U/A/Desktop> python3 tkinter_demo.py
Aran-Fey@DESKTOP-SJGQDQ8 /d/U/A/Desktop>
Но если переводчик входит в интерактивный режим после выполнения этого кода, tkinter выводит сообщение об ошибке:
Aran-Fey@DESKTOP-SJGQDQ8 /d/U/A/Desktop> python3 -i tkinter_demo.py
>>> invalid command name "2256505886152<lambda>"
while executing
"2256505886152<lambda>"
("after" script)
can't invoke "event" command: application has been destroyed
while executing
"event generate $w <<ThemeChanged>>"
(procedure "ttk::ThemeChanged" line 6)
invoked from within
"ttk::ThemeChanged"
Почему это происходит и что я могу с этим сделать?