O que o método "wait_window" faz?
Parece que o objeto que chama esse métodoaguarda que a janela passada como parâmetro seja destruída antes de continuar com seu próprio loop...
Das seqüências de documentos doMisc
classe, podemos observar:
def wait_window(self, window=None):
"""Wait until a WIDGET is destroyed.
If no parameter is given self is used."""
À primeira vista, parece que esse método pode fazer umaToplevel
modal, mas isso não é verdade. Fazer umToplevel
modal, temos que usar ograb_set()
método.
Eu tenho visto em torno de outras explicações:
wait_window
parece não retornar até que o widget fornecido seja transmitido como parâmetro não é destruído.
De outro local:
wait_window(widget)
- Cria um evento local que aguarda a destruição do widget especificado. Esse loop não afeta o loop principal do aplicativo.
Deeffbot documentação, temos:
owait_window
entra em um loop de evento local e não retorna até que a janela especificada seja destruída (pelo método destroy ou explicitamente pelo gerenciador de janelas):
widget.wait_window(window)
O que exatamente significa para umwindow
esperar porwindow
(em si)?
Parece que o código que vem após a chamada parawait_window
não é executado até que a janela passada para o mesmo método não seja destruída. No exemplo de trabalho a seguir, podemos ver uma prova do que acabamos de dizer:
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!"
será impresso somente quando o localToplevel
widget chamadodialog
está destruído.
Então, exatamente em que circunstâncias reais devo usar esse método?