Sono giunto alla conclusione che overrideredirect aiuta a rimuovere le decorazioni predefinite della finestra come la barra degli strumenti. Quali sono gli altri suoi usi? Non sono molto sicuro e non sono riuscito a trovare molta documentazione.
Sto lavorando su un mac. Utilizzando tkinter voglio ottenere una finestra che rimanga maxsize e che non possa essere ridimensionata, che ho ottenuto usando la geometria e ridimensionabile. Ciò di cui ho bisogno ora è la garanzia che nessuna battitura casuale da parte del mio utente possa chiudere la finestra. Will overrideredirect mi può aiutare in questo? C'è qualche alternativa?Cosa fa overrideredirect?
risposta
È possibile utilizzare overrideredirect()
e impostare il proprio flag su True
. Questo disabiliterà la tua finestra per essere chiusa da mezzi regolari come menzionato nel link sopra. Con mezzi regolari, si intende il pulsante X e la Alt +F4 battiture combinazione.
Dal momento che si è utilizzato geometry()
e resizable()
, è necessario chiamare update_idletasks()
t o forzare la visualizzazione di essere aggiornato prima che l'applicazione gira a vuoto successivo.
Ecco un esempio:
import Tkinter as Tk
root = Tk.Tk()
root.geometry('200x200+100+100')
root.resizable(False, False)
root.update_idletasks()
root.overrideredirect(True)
root.mainloop()
svantaggio di questo metodo: si lavora sempre su piattaforma Microsoft Windows, ma potrebbe non funzionare su alcune piattaforme Unix e MacOS.
EDIT:
hai chiesto chiarimenti sulle update_idletasks()
, penso che sia meglio se cito direttamente dal suo documentazione in quanto è più chiaro (ma se non si capisce questa citazione, per favore fatemelo sapere):
Alcune attività in aggiornamento della visualizzazione, come il ridimensionamento e ridisegnando widget, sono chiamati compiti inattive perché di solito sono differiti fino l'applicazione ha finito di gestione degli eventi ed è tornato al ciclo principale per attendere nuovi eventi.
Se si desidera forzare l'aggiornamento del display prima che l'applicazione risulti inattiva, chiamare il metodo w.update_idletasks() su qualsiasi widget .
potresti spiegare un po 'perché update_idletasks() sarebbe necessario in questo caso? non ho capito bene cosa significhi "applicazione prossimo a vuoto". Molte grazie! – momo
Controlla la mia modifica (e mi dispiace per questo feedback tardivo, ero offline) @momo –