ボタンをクリックしたときに複数の機能を実行したい。たとえば、ボタンを次のように見せたい
self.testButton = Button(self, text = "test",
command = func1(), command = func2())
このステートメントを実行すると、何かを引数に 2 回割り当てることができないため、エラーが発生します。コマンドに複数の機能を実行させるにはどうすればよいですか。
ボタンをクリックしたときに複数の機能を実行したい。たとえば、ボタンを次のように見せたい
self.testButton = Button(self, text = "test",
command = func1(), command = func2())
このステートメントを実行すると、何かを引数に 2 回割り当てることができないため、エラーが発生します。コマンドに複数の機能を実行させるにはどうすればよいですか。
関数を結合するための汎用関数を作成できます。次のようになります。
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))
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())
しかし、それは本当にひどいです...
これにはラムダを使用できます。
self.testButton = Button(self, text = "test", lambda: [f() for f in [func1, funct2]])
これも見つけました。これは私にとってはうまくいきます。みたいな状況で…
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
と同じように2番目の変数の名前を変更b1
し、ソリューションで最初のボタンテキストを削除することでした(したがって、2番目のみが表示され、単一のものとして機能します)。
関数ソリューションも試しましたが、あいまいな理由でうまくいきません。