yu00’s blog

プログラミングに関する備忘録です

イベント処理

PyQt5入門 PythonでGUI作成 - yu00’s blog

イベント処理の方法

PyQt5でキーボードやマウスなどのイベントを扱う処理の説明です.
ウィジェットでキーボードやマウスの入力などのイベント起こると,それぞれに対応する関数が呼ばれます.
例えばキーボード入力が起こるとQWidget.keyPressEvent()という
関数が呼ばれます.

イベントが起こったとき何か処理をしたい場合には,
ウィジェットを継承し対応する関数を再実装(オーバーライド)することで実現します.

イベント処理の例

例としてエスケープキーが押されたらウィンドウを閉じるプログラムを書いてみます.

#! /usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import Qt

# QWidgetを継承
class MyWidget(QWidget):
    # キーボードイベントをオーバーライド
    def keyPressEvent(self, e):
        if e.key() == Qt.Key_Escape: # キーがエスケープなら
            self.close() # 閉じる
            
if __name__ == '__main__':
    app = QApplication(sys.argv)
    
    window = MyWidget() # 継承したウィジェットを使う
    window.show()
    
    sys.exit(app.exec_())