按下按钮时有多个命令(Have multiple commands when button is p

2019-07-05 05:32发布

我想要运行多个功能,当我点击一个按钮。 例如,我希望我的按钮看起来像

self.testButton = Button(self, text = "test", 
                         command = func1(), command = func2())

当我执行这条语句,我得到一个错误,因为我不能分配东西的参数两次。 我怎样才能让命令执行多种功能。

Answer 1:

你可以创建一个通用的功能相结合的功能,它可能是这个样子:

def combine_funcs(*funcs):
    def combined_func(*args, **kwargs):
        for f in funcs:
            f(*args, **kwargs)
    return combined_func

然后,你可以创建这样的按钮:

self.testButton = Button(self, text = "test", 
                         command = combine_funcs(func1, func2))


Answer 2:

def func1(evt=None):
    do_something1()
    do_something2()
    ...

self.testButton = Button(self, text = "test", 
                         command = func1)

也许?

我想也许你可以这样做

self.testButton = Button(self, text = "test", 
                         command = lambda x:func1() & func2())

但真毛...



Answer 3:

你可以简单地使用拉姆达是这样的:

self.testButton = Button(self, text=" test", command=lambda:[funct1(),funct2()])


Answer 4:

Button(self, text="text", command=func_1()and func_2)



Answer 5:

您可以使用此拉姆达:

self.testButton = Button(self, text = "test", lambda: [f() for f in [func1, funct2]])


Answer 6:

我也发现了这个,这对我的作品。 在类似的情况...

b1 = Button(master, text='FirstC', command=firstCommand)
b1.pack(side=LEFT, padx=5, pady=15)

b2 = Button(master, text='SecondC', command=secondCommand)
b2.pack(side=LEFT, padx=5, pady=10)

master.mainloop()

... 你可以做...

b1 = Button(master, command=firstCommand)
b1 = Button(master, text='SecondC', command=secondCommand)
b1.pack(side=LEFT, padx=5, pady=15)

master.mainloop()

我所做的只是重新命名的第二个变量b2一样的第一b1和删除,在解决方案中,第一个按钮文本(所以才有第二个是可见的,将作为一个单一的一个)。

我也试过功能解决方案,但对于一个不起眼的原因,它没有为我工作。



文章来源: Have multiple commands when button is pressed