我正在Menu使用 Tkinter 在 Python 3.7 中创建一个。当我创建具有硬编码值的菜单时,例如:
obj_menu = Menu(textbox, tearoff=0)
obj_menu.add_command(label="a", command=lambda : foo("a", index))
index = index + 1
obj_menu.add_command(label="b", command=lambda : foo("b", index))
一切正常。在我的回调方法foo()中,分别选择第一个和第二个菜单项时,我得到了正确的 a 和 b 值。
但是当我在 for 循环中创建这个菜单时,我总是在我的回调方法 foo() 中得到最后一个字符。
for idx, char in enumerate(alphabets):
obj_menu.add_command(label=char, command=lambda : foo(char, idx))
我很困惑为什么无论我选择哪个菜单索引,该方法都只能获取最后一个索引的值。我错过了什么吗?