2016-07-02 14 views
5

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

4

È 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 .

+0

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

+0

Controlla la mia modifica (e mi dispiace per questo feedback tardivo, ero offline) @momo –