Pyqt-signals-and-slots
PyQt-シグナルとスロット
順次実行されるコンソールモードアプリケーションとは異なり、GUIベースのアプリケーションはイベント駆動型です。 関数またはメソッドは、ボタンをクリックする、コレクションからアイテムを選択する、またはマウスクリックなど、 events と呼ばれるユーザーのアクションに応答して実行されます。
GUIインターフェースの構築に使用されるウィジェットは、そのようなイベントのソースとして機能します。 QObjectクラスから派生した各PyQtウィジェットは、1つ以上のイベントに応じて「 signal 」を送信するように設計されています。 シグナル自体はアクションを実行しません。 代わりに、「スロット」に「接続」されています。 スロットには、任意の*呼び出し可能なPython関数*を指定できます。
PyQtでは、信号とスロットの接続はさまざまな方法で実現できます。 以下は、最も一般的に使用される技術です-
ウィジェットによって信号が発行されたときに、slot_functionを呼び出すより便利な方法は次のとおりです-
ボタンがクリックされたときに関数が呼び出されると仮定します。 ここで、クリックされた信号は呼び出し可能な関数に接続されます。 それは、次の2つの技術のいずれかで達成することができます-
or
例
次の例では、2つのQPushButtonオブジェクト(b1およびb2)がQDialogウィンドウに追加されます。 それぞれb1とb2をクリックすると、関数b1_clicked()とb2_clicked()を呼び出します。
b1がクリックされると、clicked()シグナルがb1_clicked()関数に接続されます
b2がクリックされると、clicked()シグナルがb2_clicked()関数に接続されます
例
上記のコードは、次の出力を生成します-