我尝试使用trace回调来验证对一组组合框的输入,但是我在回调中得到的参数只是内部名称的字符串表示。有没有一种方法可以获取对触发跟踪回调的实际变量的引用,或者使用内部名称(如PY_VAR1)获取变量的方法?在
from Tkinter import *
import ttk
def validate(self, *args):
print(self)
print(self.get())
master = Tk()
cb1_var = StringVar()
cb2_var = StringVar()
cb1_var.trace('w', validate)
cb2_var.trace('w', validate)
cb1 = ttk.Combobox(master, textvariable=cb1_var)
cb2 = ttk.Combobox(master, textvariable=cb2_var)
cb1.grid(row=0, column=0, sticky='NW')
cb2.grid(row=1, column=0, sticky='NW')
mainloop()
打电话失败自我获取()因为self只是字符串表示,而不是实际的StringVar。我不想为每个StringVar设置一个特定的回调函数,因为实际接口有大约30个框,我都希望用相同的标准验证。在
通过对匿名函数使用
lambda
语句,可以简单地传递所需的参数。替换:有:
^{pr2}$如果使用多个相关的对象,只需使用集合类型。对于问题中的示例,我认为
list
应该很适合。在参见以下示例:
如果需要,您也可以从其内部引用中识别变量类:
相关问题 更多 >
编程相关推荐