嗨, 我挣扎着对我来说很奇怪错误,所以我想在级联菜单中有按钮,每个按钮都应该触发功能,将它们命名为它。
代码如下:
name
所以我想在控制台中打印单击按钮的名称,并通过迭代添加按钮,而不是逐个添加(我无法预测它们的数量)
运行程序后,我没有错误,窗口显示。无论我点击哪个按钮,控制台都会打印“name2”。 我添加了几个名字 - 它总是打印最后一个选项的名称。
提前致谢
答案 0 :(得分:1)
另一种(IMO整理)方式是使用functools.partial
:
from functools import partial
for name in d:
subjects_menu.add_command(label=name, command=partial(say_hi, name))
答案 1 :(得分:0)
Lambdas很棘手,但你可以用lambda参数做你想做的事情:
for name in d:
subjects_menu.add_command(label=name, command=lambda x=name:say_hi(x))
这可以解决您的问题。