我想显示几个值StringVar()
标签上有一些格式。
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()
有没有一种方法可以编写回调函数,这样我就不必为我想要跟踪的每个变量编写一个回调函数?
您可以将密钥和输入发送到该函数。这是一个截断的版本,与您的代码略有不同,但我认为您想要的。
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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)