Il valore corrente di alcuni widget (come la casella di introduzione
di testo) può essere connesso direttamente a variabili
dell'applicazione usando speciali opzioni. Queste opzioni sono
variable
, textvariable
, onvalue
, offvalue
e value
. Questo collegamento lavora in entrambe le direzioni:
se la variabile, per qualunque motivo, cambia, allora il widget
collegato verrà modificato per riflettere il nuovo valore.
Sfortunatamente nell'implementazione corrente di Tkinter
non è possibile passare una variabile Python arbitraria ad un widget
attraverso l'opzione variable
o textvariable
. L'unico
tipo di variabili che possono svolgere questo lavoro sono variabili
che derivano da una classe chiamata Variable, definita nel modulo
Tkinter.
Ci sono molte sottoclassi di Variable già definite: StringVar, IntVar, DoubleVar e BooleanVar. Per leggere il valore attuale di una tale variabile, chiamare il suo metodo get() e, per cambiarlo, il metodo set(). Se si segue questo protocollo il widget si adeguerà sempre al valore della variabile senza ulteriori interventi.
Per esempio:
class App(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.pack() self.entrythingy = Entry() self.entrythingy.pack() self.button.pack() # Qui c'è la variabile dell'applicazione self.contents = StringVar() # Le viene dato un qualche valore self.contents.set("this is a variable") # Si fa in maniera che il widget di immissione veda questa variabile self.entrythingy["textvariable"] = self.contents # e qui si mette la chiamata ad una funzione quando l'utente preme return. # faremo in modo che il programma stampi il valore della # variabile dell'applicazione quando l'utente preme return. self.entrythingy.bind('<Key-Return>', self.print_contents) def print_contents(self, event): print "Ciao. Il contenuto della casella di immissione ora è ---->", \ self.contents.get()
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.