Что делает метод wait_window?
Кажется, что объект, который вызывает этот методожидает, что окно, переданное как параметр, будет уничтожено, прежде чем продолжить свой собственный цикл...
Из строк документаMisc
класс, мы можем наблюдать:
def wait_window(self, window=None):
"""Wait until a WIDGET is destroyed.
If no parameter is given self is used."""
На первый взгляд кажется, что этот метод можетToplevel
модально, но это не так. СделатьToplevel
модальный, мы должны использоватьgrab_set()
метод.
Я видел вокруг другие объяснения:
wait_window
кажется, не возвращается, пока данный виджет не будет передан как параметр не уничтожен.
Из другого места:
wait_window(widget)
- Создает локальное событие, которое ожидает уничтожения данного виджета. Этот цикл не влияет на основной цикл приложения.
Отeffbot Документация у нас есть:
wait_window
входит в локальный цикл обработки событий и не возвращает до тех пор, пока данное окно не будет уничтожено (либо с помощью метода destroy, либо явно с помощью диспетчера окон):
widget.wait_window(window)
Что именно означает дляwindow
ждатьwindow
(сам)?
Кажется, что код, который приходит после вызоваwait_window
не выполняется, пока окно, переданное тому же методу, не будет уничтожено. В следующем рабочем примере мы можем увидеть доказательство того, что только что сказал:
from tkinter import *
def on_win_request(parent):
dialog = Toplevel()
parent.wait_window(dialog)
# executed only when "dialog" is destroyed
print("Mini-event loop finished!")
r = Tk()
b = Button(r, text='New Window', command=lambda: on_win_request(r))
b.pack()
b2 = Button(r, text='Hello!', command=lambda: print("hello"))
b2.pack()
r.mainloop()
"Mini-event loop finished!"
будет напечатан только когда местныйToplevel
виджет называетсяdialog
уничтожен
Итак, в каких именно реальных условиях я должен использовать этот метод?