我在GUI中使用了tk变量列表。如何使回调使用被跟踪的tk.Variable的i-Value?
def callback(a,b,c):
print 'i+2'
ButtonsList=[]
VarList=[]
i=0
while i<30:
VarList.append(tk.BooleanVar())
VarList[i].trace('w',callback)
ButtonsList.append(tk.Checkbutton(root, text="This is a CB",variable=VarList[i]))
ButtonsList[i].place(x=x,y=i*20)
i+=1
答案 0 :(得分:1)
您可以将回调包装在lambda中,该lambda会为函数调用添加其他参数。
def callback(a,b,c,idx):
print 'i+2'
#later on in the program:
VarList[i].trace('w', lambda a,b,c,i=i: callback(a,b,c,i))
注意lambda中的i=i
。这对于在注册回调后其值发生变化的变量是必需的。没有它,i
将始终为30,无论您单击哪个Checkbutton。