我想在一个循环中制作5个按钮,并为每个按钮绑定一条命令以打印索引。在以下解决方案中,它始终打印相同的索引。我的代码是这样的:for i in range(5): make_button = Tkinter.Button(frame, text ="make!", command= lambda: makeId(i))def makeId(i): print(i)它总是打印5.如何解决此问题?
1 回答

汪汪一只猫
TA贡献1898条经验 获得超8个赞
执行lambda时,将完成lambdas中变量的解析。此时,对于所有按钮,i = 5。要纠正此问题,请执行以下操作:
make_button = Tkinter.Button(frame, text ="make!",
command= lambda i=i: makeId(i))
这会将我创建为lambda中的局部变量。此局部变量将从循环中保存i的正确值。局部变量可以具有任何名称,不一定是i,例如command= lambda a=i: makeId(a))。
添加回答
举报
0/150
提交
取消