Tkinter:点击菜单中的按钮触发错误参数的功能

时间:2017-12-09 20:13:29

标签: python python-3.x user-interface tkinter

嗨, 我挣扎着对我来说很奇怪错误,所以我想在级联菜单中有按钮,每个按钮都应该触发功能,将它们命名为它。

代码如下:

name

所以我想在控制台中打印单击按钮的名称,并通过迭代添加按钮,而不是逐个添加(我无法预测它们的数量)

运行程序后,我没有错误,窗口显示。无论我点击哪个按钮,控制台都会打印“name2”。 我添加了几个名字 - 它总是打印最后一个选项的名称。

提前致谢

2 个答案:

答案 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))

这可以解决您的问题。