ホームページ >バックエンド開発 >Python チュートリアル >Lambda 関数または functools.partial を使用して追加の引数を Qt スロットに渡す方法
Qt アプリケーションでスロットを接続する場合、スロット関数に追加の引数を渡す必要がある場合があります。これは、lambda 関数を使用するか、functools.partial を使用する 2 つの方法で実行できます。
Lambda 関数を使用すると、信号をスロットに接続するときに追加の引数をキーワード引数として渡すことができます。一般的な構文は次のとおりです:
connect(lambda param1, param2, ..., arg1=val1, arg2=value2, ... : fun(param1, param2,... , arg1, arg2, ....))
ここで:
あなたの場合、コードは次のようになります:
self.buttonGroup.buttonClicked['int'].connect(lambda i: self.input(i, "text")) @pyqtSlot(int) def input(self, button_or_id, DiffP): # Use the extra argument `DiffP` in the slot function ...
Functools。 Partial は、スロット関数に追加の引数を渡すための別のメソッドを提供します。指定された引数にバインドされた新しい関数を作成します。一般的な構文は次のとおりです:
partial(fun, args1, arg2, ... )
ここで:
これをコード内で使用する方法は次のとおりです:
from functools import partial ... self.buttonGroup.buttonClicked['int'].connect(partial(self.input, "text")) @pyqtSlot(int) def input(self, DiffP, button_or_id): # `DiffP` will be passed as the first argument to the slot function ...
以上がLambda 関数または functools.partial を使用して追加の引数を Qt スロットに渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。