我想点击按钮时运行多个功能。例如,我希望我的按钮看起来像
self.testButton = Button(self, text = "test",
command = func1(), command = func2())
当我执行这个语句时,我收到一个错误,因为我不能两次为一个参数分配一些东西。如何让命令执行多个函数。
答案 0 :(得分:22)
您可以创建一个用于组合函数的通用函数,它可能如下所示:
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))
答案 1 :(得分:13)
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())
但这真的很糟糕......
答案 2 :(得分:12)
您可以像这样简单地使用lambda:
self.testButton = Button(self, text=" test", command=lambda:[funct1(),funct2()])
答案 3 :(得分:2)
Button(self, text="text", command=func_1()and func_2)
答案 4 :(得分:1)
你可以使用lambda:
self.testButton = Button(self, text = "test", lambda: [f() for f in [func1, funct2]])
答案 5 :(得分:0)
我也找到了它,它对我有用。在类似...的情况下
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
相同,并在解决方案中删除了第一个按钮文本(因此仅第二个按钮可见,并且将用作一个)。
我也尝试了函数解决方案,但是由于一个晦涩的原因,它对我不起作用。
答案 6 :(得分:0)
这是一个简短的示例:按下下一个按钮时,它将在1个命令选项中执行2个功能
from tkinter import *
window=Tk()
v=StringVar()
def create_window():
next_window=Tk()
next_window.mainloop()
def To_the_nextwindow():
v.set("next window")
create_window()
label=Label(window,textvariable=v)
NextButton=Button(window,text="Next",command=To_the_nextwindow)
label.pack()
NextButton.pack()
window.mainloop()
答案 7 :(得分:0)
我认为使用lambda来运行多个功能的最佳方法。
这里是一个示例:
button1 = Button(window,text="Run", command = lambda:[fun1(),fun2(),fun3()])
答案 8 :(得分:0)
检查一下,我已经尝试过这种方法,因为我遇到了同样的问题。这对我有用。
def all():
func1():
opeartion
funct2():
opeartion
for i in range(1):
func1()
func2()
self.testButton = Button(self, text = "test", command = all)