Tkinter用lambda在循环中分配按钮命令我正在尝试创建几个按钮(带有一个for),如下所示:def a(self, name):
print name
users = {"Test":"127.0.0.0", "Test2":"128.0.0.0"}row = 1for name in users:
user_button = Tkinter.Button(self.root,
text=name,
command=lambda: self.a(name))
user_button.grid(row = row, column = 0)
row+=1对于每个按钮,每个按钮都有自己的参数(Test获取Test和Test 2获取Test 2),但是当我按下按钮时,它们都会打印“test 2”,这意味着它们使用相同的参数使用相同的函数。我怎么解决这个问题?
2 回答

炎炎设计
TA贡献1808条经验 获得超4个赞
name
name
name
user_button = Tkinter.Button(self.root, text=name, command=lambda name=name: self.a(name))
name
name

慕田峪7331174
TA贡献1828条经验 获得超13个赞
它不是一个简单的问题,它是一个关于函数嵌套、闭包等的问题,它也存在于完全不同的上下文中。尽管如此,正如它所描述的那样,+1确实描述了发生了什么。
添加回答
举报
0/150
提交
取消