シグナルは関数(Qtでは「スロット」)に結びつけて使用することで処理を実行できるようになります。
次のサンプルは、ボタンをクリックすると終了するというものです。
import sys from PyQt5.QtWidgets import QApplication from PyQt5.QtWidgets import QPushButton if __name__ == '__main__': app = QApplication(sys.argv) button = QPushButton('Quit') button.clicked.connect(quit) button.show() sys.exit(app.exec_())
9行目、ボタンウィジェットQPushButtonをインスタンス化します。
引数でボタンのキャプションを'Quit'に指定します。
QPushButtonはクリックするとclicked()というシグナルを発行します。
PyQtでは、シグナルのconnectメソッドにスロット関数を指定することで、シグナルとスロットを接続することができるわけです。
10行目でclickedシグナルにQApplicationのquitスロットを指定して、クリック時にアプリを終了するようにしています。
PyQtのシグナルはPyQtSignalクラスで管理されているようですが、ウィジェットにはclickedみたいにPyQtSignalをインスタンス化したプロパティがたくさん定義してあるという感じなのかな…
(ソースがないのでイマイチ不明ですが…)
実行すると、こんな感じです。
Quitボタンをクリックすると、終了します。
それだけです…