我在tkinter中创建了很多菜单,每个菜单都有相应的命令,所以我必须创建一些命令函数。
如果标签内容可以是一个参数,那么我可以将其传递给一个函数。我怎样才能使它成为一个参数?
DataSource
答案 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 == ...:
...
但是,除非所有这些回调非常相似,否则我建议实际使用不同的回调函数来处理不同的菜单按钮。