Python 有没有办法获取刚刚点击的tkinter菜单按钮上的信息?

Python 有没有办法获取刚刚点击的tkinter菜单按钮上的信息?,python,tkinter,Python,Tkinter,我有一个for:循环,它为我的电子邮件服务器拥有的每个邮箱创建一个tkinter菜单级联,所有这些都指向同一个命令,下面是代码: menubar = Menu (rootA) foldermenu = Menu(menubar, tearoff=0) for i in range(len(mailboxes)): foldermenu.add_command(label=mailboxes[i], command=switchBox) 但是我需要一种方法来准确地

我有一个
for:
循环,它为我的电子邮件服务器拥有的每个邮箱创建一个tkinter菜单级联,所有这些都指向同一个命令,下面是代码:

menubar = Menu (rootA)
    foldermenu = Menu(menubar, tearoff=0)
    for i in range(len(mailboxes)):
        foldermenu.add_command(label=mailboxes[i], command=switchBox)

但是我需要一种方法来准确地识别代码中单击了哪个按钮,那么有没有任何方法可以返回您刚才选择的菜单的“标签”或返回索引或其他?例如,tkinter列表框具有函数
.curselection()

,您可以将邮箱传递给回调。这就是您希望使用
lambda
的主要原因。如果不传递任何值,则使用
lambda
没有意义

def switchBox(mailbox):
    ...

foldermenu.add_command(..., command=lambda mbox=mailboxes[i]: switchBox(mbox))
...

注意:这是因为我们在创建
lambda
时绑定了
mbox
的值。有关
lambda
和绑定值的更多信息,请参见您可以将邮箱传递到回调。这就是您希望使用
lambda
的主要原因。如果不传递任何值,则使用
lambda
没有意义

def switchBox(mailbox):
    ...

foldermenu.add_command(..., command=lambda mbox=mailboxes[i]: switchBox(mbox))
...

注意:这是因为我们在创建
lambda
时绑定了
mbox
的值。有关
lambda
和绑定值的更多信息,请参见Unrelated,但您可以只使用
command=switchBox
,而不使用
lambda
()
哦,是的,谢谢!我之前在尝试让它工作时传递了一些变量,一定是忘记了删除它。或者你可以将
I
传递给lambda;在这种情况下,请记住,lambda中的变量是在调用函数时计算的,而不是在定义函数时计算的(参见示例),即使用类似
command=lambda x=i:switchBox(x)
的东西,但是您可以只使用
command=switchBox
,而不使用
lambda
()
哦,是的,谢谢!我之前在尝试让它工作时传递了一些变量,一定是忘记了删除它。或者你可以将
I
传递给lambda;在这种情况下,请记住,lambda中的变量是在调用函数时计算的,而不是在定义函数时计算的(参见示例),即使用类似
command=lambda x=i:switchBox(x)
!我一直在尝试做类似的事情,但由于我的格式设置,我总是得到循环中的最后一个邮箱,谢谢!这太完美了!我一直在尝试做类似的事情,但由于我的格式设置,我总是得到循环中的最后一个邮箱,谢谢!