27 agosto 2018

[Python.it] TKinter, lanciare una funzione ad ogni carattere digitato in Entry()

Si vuole lanciare una funzione che (in questo caso) per ogni carattere digitato nell'Entry 1 di fatto faccia apparire come per magia nell'Entry 2 i caratteri digitati. Siamo sulla libreria grafica Tkinter utilizzando Python 3.5.2.

#Testato con Python 3.5.2 @ GNU/Linux
from tkinter import *

#Qui si copia il valore
def callback(source):
    result.set(source.get())

#Assegnazioni principali
master = Tk()
source = StringVar()
result = StringVar()

#Chiamata al callback
source.trace("w", lambda name, index, mode, source=source: callback(source))

#Label & Entry
l1 = Label(master, text="Entry 1")
e1 = Entry(master, textvariable=source)
l2 = Label(master, text="Entry 2")
e2 = Entry(master, textvariable = result)
l3 = Label(master, text="by Palmux",font=("Helvetica", 7))

#Pack
l1.pack()
e1.pack()
l2.pack()
e2.pack()
l3.pack()

#Loop
master.mainloop()
 
Si ottiene questo:

Come sempre grazie amico Python, con te è tutto semplice.

Tondo è bello...

Tondo è bello...