¿Cómo puedo usar la misma función de callback para rastrear múltiples variables?

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()