Me gustaría mostrar el valor de varios StringVar()
con algún formato en las tags.
import tkinter as tk keys = range(2) # 2 for simplicity root = tk.Tk() myVars = {key: tk.StringVar() for key in range(5)} myStrVars = {key: tk.StringVar() for key in range(5)} def callback0(*args): blah = '{0:.3f}'.format(float(myVars[0].get())) myStrVars[0].set(blah) def callback1(*args): blah = '{0:.3f}'.format(float(myVars[1].get())) myStrVars[1].set(blah) #etc... myCallbacks = {0: callback0, 1: callback1} #etc... for key in keys: myVars[key].trace('w', myCallbacks[key]) tk.Entry(root, textvariable=myVars[key]).pack() label = tk.Label(root, textvariable=myStrVars[key]).pack() root.mainloop()
¿Hay alguna forma de escribir una función de callback para que no tenga que escribir una para cada variable que deseo rastrear?
Puede enviar la clave y la entrada a la función. Esta es una versión truncada y un poco diferente a tu código, pero hace lo que creo que quieres.
import tkinter as tk from functools import partial def callback(key, var, *args): print "callback var =", key, var.get() ##myStrVars[key].set(var[-1]) root = tk.Tk() for key in range(5): var = tk.StringVar() var.trace('w', partial(callback, key, var)) tk.Entry(root, textvariable=var).pack() root.mainloop()