Что делает метод 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 уничтожен

Итак, в каких именно реальных условиях я должен использовать этот метод?

Ответы на вопрос(1)

Ваш ответ на вопрос