我可以将弹出菜单中的标签内容识别为参数吗?

时间:2016-02-24 09:00:50

标签: python tkinter

我在tkinter中创建了很多菜单,每个菜单都有相应的命令,所以我必须创建一些命令函数。

如果标签内容可以是一个参数,那么我可以将其传递给一个函数。我怎样才能使它成为一个参数?

DataSource

2 个答案:

答案 0 :(得分:1)

只使用一个命令lambda

def hello(text=None):
   if text:
      # Do some things

self.menu=Menu()
self.menu.add_command(label='hereiam1',command=lambda :self.hello('some_text'))
self.menu.add_command(label='hereiam2',command=self.hello)
self.menu.add_command(label='hereiam3',command=self.hello)

答案 1 :(得分:0)

您无法影响菜单按钮或其他窗口小部件自身传递给回调函数的参数(在本例中为none),但您可以使用lambda函数传递参数:

self.menu.add_command(label='hereiam1', command=lambda: self.hello('hereiam1'))

和其他按钮类似。然后,在回调函数中,测试此参数并执行不同的操作:

def hello(self, hint):
    if hint == "hereiam1":
        print("do stuff for hereiam1")
    elif hint == ...:
        ...

但是,除非所有这些回调非常相似,否则我建议实际使用不同的回调函数来处理不同的菜单按钮。