아래와 같이 자주 쓰이는 이벤트 핸들러는 이미 만들어져 있는 경우가 많습니다.
이벤트 핸들러 | 설명 |
keyPressEvent | 키보드를 눌렀을 때 동작합니다. |
keyReleaseEvent | 키보드를 눌렀다가 뗄 때 동작합니다. |
mouseDoubleClickEvent | 마우스를 더블클릭할 때 동작합니다. |
mouseMoveEvent | 마우스를 움직일 때 동작합니다. |
mousePressEvent | 마우스를 누를 때 동작합니다. |
mouseReleaseEvent | 마우스를 눌렀다가 뗄 때 동작합니다. |
moveEvent | 위젯이 이동할 때 동작합니다. |
resizeEvent | 위젯의 크기를 변경할 때 동작합니다. |
keyPressEvent 이벤트 핸들러를 수정해서, 특정 키를 눌렀을 때 위젯을 종료하거나 최대화, 보통 크기로 조절하는 기능을 구현합니다.
44-1. 예제: ex43
import sys from PyQt5.QtWidgets import (QApplication, QWidget) from PyQt5.QtCore import Qt class MyApp(QWidget): key_code = [Qt.Key_Space, Qt.Key_Exclam, Qt.Key_QuoteDbl, Qt.Key_NumberSign, Qt.Key_Dollar, Qt.Key_Percent, Qt.Key_Ampersand, Qt.Key_Apostrophe, Qt.Key_ParenLeft, Qt.Key_ParenRight, Qt.Key_Asterisk, Qt.Key_Plus, Qt.Key_Comma, Qt.Key_Minus, Qt.Key_Period, Qt.Key_Slash, Qt.Key_0, Qt.Key_1, Qt.Key_2, Qt.Key_3, Qt.Key_4, Qt.Key_5, Qt.Key_6, Qt.Key_7, Qt.Key_8, Qt.Key_9, Qt.Key_Colon, Qt.Key_Semicolon, Qt.Key_Less, Qt.Key_Equal, Qt.Key_Greater, Qt.Key_Question, Qt.Key_At, Qt.Key_A, Qt.Key_B, Qt.Key_C, Qt.Key_D, Qt.Key_E, Qt.Key_F, Qt.Key_G, Qt.Key_H, Qt.Key_I, Qt.Key_J, Qt.Key_K, Qt.Key_L, Qt.Key_M, Qt.Key_N, Qt.Key_O, Qt.Key_P, Qt.Key_Q, Qt.Key_R, Qt.Key_S, Qt.Key_T, Qt.Key_U, Qt.Key_V, Qt.Key_W, Qt.Key_X, Qt.Key_Y, Qt.Key_Z, Qt.Key_BracketLeft, Qt.Key_Backslash, Qt.Key_BracketRight, Qt.Key_AsciiCircum, Qt.Key_Underscore, Qt.Key_QuoteLeft, Qt.Key_BraceLeft, Qt.Key_Bar, Qt.Key_BraceRight, Qt.Key_AsciiTilde, Qt.ControlModifier, Qt.ShiftModifier, Qt.AltModifier, Qt.Key_Delete, Qt.Key_Backspace, Qt.Key_Return, Qt.Key_Enter, Qt.Key_Escape, Qt.Key_Right, Qt.Key_Left, Qt.Key_Up, Qt.Key_Down] def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('Reimplementing event handler') self.setGeometry(300, 300, 300, 200) self.show() def keyPressEvent(self, e): if e.key() == Qt.Key_Escape: print('KeyPress:ESC') self.close() elif e.key() == Qt.Key_F: print('KeyPress:F') self.showFullScreen() elif e.key() == Qt.Key_N: print('KeyPress:N') self.showNormal() if __name__ == '__main__': app = QApplication(sys.argv) ex = MyApp() sys.exit(app.exec_()) |
44-2 설명
def keyPressEvent(self, e): if e.key() == Qt.Key_Escape: self.close() elif e.key() == Qt.Key_F: self.showFullScreen() elif e.key() == Qt.Key_N: self.showNormal() |
keyPressEvent 이벤트 핸들러는 키보드의 이벤트를 입력으로 받습니다.
e.key()는 어떤 키를 누르거나 뗐는지를 반환합니다.
'esc' 키를 눌렀다면, self.close()를 통해 위젯이 종료됩니다.
'F' 키 또는 'N' 키를 눌렀다면, 위젯의 크기가 최대화되거나 보통 크기가 됩니다.
'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글
46. 사용자 정의 시그널 (0) | 2021.07.28 |
---|---|
45. 이벤트 핸들러(슬롯) 재구성하기2 (0) | 2021.07.28 |
43. 이벤트 핸들러(슬롯) 만들기 (0) | 2021.07.28 |
42. 시그널과 슬롯 연결 (0) | 2021.07.28 |
41. QMessageBox (0) | 2021.07.28 |