2015-04-17 9 views
9

Python ha classi per le variabili Tkinter StringVar(), BooleanVar(), ecc. Questi condividono tutti i metodi get(), set(string) e trace(mode, callback). La funzione callback è passata mentre il secondo argomento a trace(mode, callback) ha superato quattro argomenti, self, n, m, x.Quali sono gli argomenti per i callback del metodo di traccia variabile Tkinter?

Per un esempio di BooleanVar() questi sembrano essere '', 'PYVAR0', 'w'.

Il terzo argomento x sembra essere la modalità che ha attivato la traccia, nel mio caso la variabile è stata modificata. Tuttavia, qual è la prima variabile che sembra essere una stringa vuota? Qual è il secondo, se dovessi indovinare direi un nome interno per la variabile?

risposta

14

Il primo argomento è il nome della variabile interna. Più o meno inutile in un contesto di tkinter, ma estremamente utile per l'interprete di base di tcl.

Se il primo argomento rappresenta una variabile di lista (improbabile in tkinter), il secondo argomento sarà un indice in tale elenco. Se è una variabile scaler, il secondo argomento sarà la stringa vuota.

Il terzo argomento è l'operazione, utile se si utilizza lo stesso metodo per leggere, scrivere e/o eliminare la variabile. Questo argomento ti dice quale operazione ha attivato il callback. Sarà "w" per un'operazione di scrittura (impostazione della variabile) e "r" per un'operazione di lettura (ottenendo il valore della variabile). Sarà "u" se la variabile è cancellata ("u" è l'abbreviazione di "unset")

Tkinter è un wrapper python attorno ad un interprete tcl/tk. La documentazione definitiva per le tracce variabili può essere trovata qui: http://tcl.tk/man/tcl8.5/TclCmd/trace.htm#M14. Tuttavia, questo documenta solo come funziona la traccia interna, il wrapper tkinter a volte massaggia i dati.

+0

Il primo argomento è super-utile se il callback della traccia è un metodo in un'istanza di classe. In questo caso, il primo argomento punta all'istanza della classe. Potrebbero esserci altre circostanze in cui lo "scope" del callback fa sì che il primo argomento sia molto utile. – Gary02127

2

Il primo argomento è il nome della variabile, ma non è "inutile", in quanto è possibile impostare quando si dichiara la variabile, ad esempio:

someVar = IntVar(name="Name of someVar") 

Quando si controlla il primo argomento della richiamata traccia sarà uguale a "Name of someVar". Utilizzando il nome per distinguere tra variabili, è possibile quindi associare lo stesso gestore per tracciare le modifiche a un numero qualsiasi di variabili, anziché richiedere un gestore separato per ogni variabile.

Problemi correlati