2013-04-12 5 views
5

Vorrei mostrare una finestra dopo aver chiamato withdraw.Come mostrare una finestra che è stata nascosta usando il metodo "withdraw"?

Quello che segue è il mio codice corrente:

from Tkinter import * 

def callback():  
    global root 
    root.withdraw() 
    win2 = Tk() 

root = Tk() 
Label(root,text='this is a window').pack() 
Button(root,text='withdraw',command=self.callback).pack() 
mainloop() 

Non appena si preme il pulsante, la finestra scompare tanto quanto lo voglio, e appare un'altra finestra e tutto funziona alla grande. Come posso riavere la prima finestra, nello stesso stato in cui era prima?

+0

Un dettaglio importante: le funzioni di callback non sono sottoprocessi. Corrono sullo stesso thread del codice Tkinter e la GUI si blocca se impiegano troppo tempo. Se si trattasse di un sottoprocesso, non è possibile accedere alle variabili globali da tale funzione. –

+0

Non dovresti mai creare due istanze di 'Tk' - Tkinter semplicemente non è progettato per funzionare in questo modo. Se hai bisogno di più finestre, crea istanze di 'Toplevel'. –

+0

Grazie @Bryan Oakley !! – IcyFlame

risposta

8

utilizzare i seguenti comandi quando si desidera visualizzare la finestra:

# root.update() # not required 
root.deiconify() 

Se vuoi sapere di più su di esso, vedere here.

+2

La chiamata a 'update' è superflua. –

+0

Significa che non è richiesto ?? – IcyFlame

+0

corretto, non è richiesto. –

Problemi correlati