PDA

Visualizza la versione completa : [Python] Variabili


cl.venturini
08-01-2003, 23:10
è possibile creare variabile senza assegnarli inizialmente alcun valore???


Io per esempio ho questo script che crea una GUI



import Tkinter

a_str = []
NameStr = ""

def ComplaintDialog():
Title["text"] = NameStr

root=Tkinter.Tk()
Title = Tkinter.Label(root)
Title["text"] = len(a_str) + 1
Title.pack()
Tkinter.Entry(root,textvariable = NameStr).pack()
Butt = Tkinter.Button(root,text="Prova",command = ComplaintDialog).pack()
root.mainloop()


La variabile NameStr dovrebbe contenere il valore specificato dall'utente nell'Entry, ma poichè la variaile NameStr devo dichiararla e assegnargli un valore ogni volta il valore contenuto in NameStr si azzera ritornando "".

Come devo fare??
Scusate ma sono alle prime armi con Python...

:bhò:

l.golinelli
09-01-2003, 12:10
Non ha capito bene... :master:

cl.venturini
09-01-2003, 19:11
non ti preoccupare, fai così. Modifica il mio programma in modo che quando l'utente preme il bottone il testo del label diventa ciò che l'utente ha scritto nell'entry.

Ti semplifico un po' il codice eliminandoti quell'array che forse ti crea un po' di casino in testa:



import Tkinter

NameStr = ""

def ComplaintDialog():
Title["text"] = NameStr

root=Tkinter.Tk()
Title = Tkinter.Label(root)
Title["text"] = "testo originale"
Title.pack()
Tkinter.Entry(root,textvariable = NameStr).pack()
Butt = Tkinter.Button(root,text="Prova",command = ComplaintDialog).pack()
root.mainloop()


dato che una variabile in python deve essere dichiarata assegnandogli un valore devo per forza mettere NameStr = "". Il problema è che quando un untente mette il testo nell'entry e clicca il bottone inizialmente la variabile NameStr prende il valore immesso nell'entry, ma poi diviene ancora azzerata dalla definizione di variabile NameStr="".

Penso che ciò possa essere evitato dichiarando semplicemente la variabile senza assegnarli alcun valore... ma si può??? Se si può fare, COME si fa??

Il alternativa probabilemnte ho trovato un'altra soluzione, ma mi serve sapere come si fa per capire se una variabile è stata mai creata (se conosci PHP è come la funzione isset(), che prende come argomento una variabile e restituisce TRUE se esiste e FALSE se non esiste). Attenzione!!! La funzione non deve dirmi se alla variabile è associato un valore, ma se la variabile esiste!!!

Spero di essere stato più chiaro

l.golinelli
09-01-2003, 21:38
La Entry ha il metodo get()

Quando clicchi il bottone vai a mettere nella Label il valore della Entry così:

Label["text"] = Entry.get()

O no... :eek:

cl.venturini
09-01-2003, 21:41
grazie, cmq ho risolto con le variabili di tkinter impostando la variabile

NameStr = Tkinter.StringVar(root)

e poi Label["text"] = NameStr.get()


grazie 1000 cmq

ora prova a darmi una mano nell'altro post che ho messo poco fa intitolato "[Python] Tkinter: frame, scrollbars, canvas".


grazie 1000

Loading