2013-02-23 13 views
6

Dire che ho un po 'di semplice codice, come questo:Toplevel in Tkinter: evitare che due Windows da apertura

from Tkinter import * 
root = Tk() 
app = Toplevel(root) 
app.mainloop() 

Questo apre due finestre: la finestra Toplevel(root) e la finestra Tk().

È possibile evitare la finestra Tk() (root) dall'apertura? Se é cosi, come? Voglio solo il massimo. Voglio che questo accada perché sto facendo un programma che aprirà più finestre, che sono tutte Toplevel di root.

Grazie!

risposta

10

Il metodo withdraw() rimuove la finestra dallo schermo.
Il metodo iconify() riduce la finestra o la trasforma in un'icona.
Il metodo deiconify() ridisegna la finestra e/o attiva la finestra.

Se si sceglie withdraw(), assicurarsi di aver considerato un nuovo modo di uscire dal programma prima del test.
ad es.

from Tkinter import * # tkinter in Python 3 

root = Tk() 
root.withdraw() 

top = Toplevel(root) 
top.protocol("WM_DELETE_WINDOW", root.destroy) 

but = Button(top, text='deiconify') 
but['command'] = root.deiconify 
but.pack() 

root.mainloop() 

Procedimento protocol() può essere utilizzato per registrare una funzione che verrà chiamata quando viene premuto pulsante di chiusura della finestra Toplevel
. In questo caso possiamo usare destroy() per uscire.

Problemi correlati