maresama ha scritto:
Codice: Seleziona tutto
from Tkinter import *
def xxxx(titolo, desc,testo):
root=Tk()
root.title(titolo)
root.maxsize(width=1266, height=300)
txt=Text(root,width=80, height=10,pady=15,padx=10)
txt.insert(END,testo)
# [...]
button = Button(lb2, text=" Conferma ", font=("Arial black",8,"bold"), bg="green",command=root.destroy, bd=3, padx=30, pady=10) # XXX
button.pack()
root.mainloop()
return testo # XXX
desc="aaaaa ccccc"
testo="testo in fase di partenza\n(di più righe)\nda modificare"
titolo="testo da digitare"
testo=xxxx(titolo, desc,testo)
print testo
non va bene per un paio di motivi, innanzitutto 'testo' è una stringa, *immutabile*, per cui ti verrà restituita sempre quella stessa identica che hai passato alla funzione.
Quando metti 'testo' nel widget (ed eventualmente lo modifichi) poi devi prenderlo sempre da lui (usando il metodo get(), btw).
Altra cosa, devi farlo *prima* di distruggere tutto, per cui devi legare l'azione del pulsante anche a questa azione prima di chiamare destroy su root. Probabilmente ti servirà usare una StringVar, o almeno è la soluzione più comoda che mi è venuta in mente buttando giù al volo ste due righe:
Codice: Seleziona tutto
crap0101@orange:/tmp/FOO$ cat x.py
#coding: utf-8
from Tkinter import *
def _destroy (root, txt, str):
def doit ():
str.set(txt.get('1.0', END))
root.destroy()
return doit
def xxxx(titolo, desc,testo):
root=Tk()
root.title(titolo)
root.maxsize(width=1266, height=300)
strtxt = StringVar()
txt=Text(root,width=80, height=10,pady=15,padx=10)
txt.insert(END,testo)
txt.grid(row=6)
txt.focus()
txt.pack()
lb1= Label(root,text=desc, fg="blue",font=("Arial Black",10,""))
lb1.pack()
lb2= Label(root,text="", fg="blue",font=("Arial Black",10,""))
lb2.pack()
button = Button(lb2, text=" Conferma ", font=("Arial black",8,"bold"), bg="green",command=_destroy(root,txt,strtxt), bd=3, padx=30, pady=10)
button.pack()
root.mainloop()
return strtxt.get()
desc="aaaaa ccccc"
testo="testo in fase di partenza\n(di più righe)\nda modificare"
titolo="testo da digitare"
testo=xxxx(titolo, desc,testo)
print testo