我有一个函数,比如foo,它应该绑定一个事件
def foo:
for x in widget_list:
widget.config(command = lambda: self.function(widget_list.index(x))
def function(index):
do something here....
print index
小部件列表包含按钮,每当我点击相应的按钮时,他们应该打印到IDLE他们的索引,但会发生的是我点击的所有按钮最终都打印了widget_list的最后一个索引。我猜测,对于迭代,函数的参数也会改变,因此只保留最后一个索引。无论如何将先前的索引绑定到按钮?
答案 0 :(得分:0)
最简单的解决方法是确保您的lambda使用当前值x
:
widget.config(command = lambda x=x: self.function(widget_list.index(x))
这会强制x
成为函数的默认参数,默认值将是定义lambda时x
的值。