PyQt5入門 PythonでGUI作成 - yu00’s blog
シグナルとスロットとは
シグナルとスロットの例として,
ボタンを押したときに何か処理をするプログラムを考えます.
そのときの流れは次のようになります.
- ボタンを押す
- ボタンが押されたというイベントが発行される
- そのイベントに紐づけされた処理が実行される
この流れの2がシグナル,3がスロットになります.
このように,シグナルは何かが起こったときに発行されるイベント,
スロットはシグナルが起こったとき実行される処理です.
シグナルとスロットの特徴
シグナルとスロットには次のような特徴があります.
シグナルとスロットは自分で作ることもできる
シグナル,スロットはもともとあるものを利用することもできますが,
自分で作ることもできます.
シグナルとスロットの例
シグナルとスロットの例としてボタンが押されたときに
アプリを終了するプログラムを書いてみます.
#! /usr/bin/python3 # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton) if __name__ == '__main__': app = QApplication(sys.argv) window = QWidget() button = QPushButton('button', window) # スロットを設定 button.clicked.connect(app.quit) window.show() sys.exit(app.exec_())
ボタンが押されたときQPushButton.clicked()というシグナル関数が呼ばれます.
QApplication.quit()はアプリを終了する関数です.
上のプログラムのようにconnect関数を実行するすることで,
clickedシグナルのスロットにquitが設定されます.
そして,ボタンが押されたときclicked()が呼ばれ,quit()が呼ばれることで
アプリが終了します.