Qwidget keyEvent
1) keyPressEvent(event): 키보드 키가 눌릴 때 발생하는 이벤트를 처리
2) keyReleaseEvent(event): 키보드 키를 눌렀다가 뗄 때 발생하는 이벤트를 처리
Qt.key
| 키 코드 | 설명 |
|---|---|
| Qt.Key_Escape | Escape 키 |
| Qt.Key_Tab | Tab 키 |
| Qt.Key_Backtab | Backtab 키 |
| Qt.Key_Backspace | Backspace 키 |
| Qt.Key_Return | Return 키 |
| Qt.Key_Enter | Enter 키 (일반적으로 키패드에 위치) |
| Qt.Key_Insert | Insert 키 |
| Qt.Key_Delete | Delete 키 |
| Qt.Key_Pause | Pause/Break 키 (미디어 재생 일시정지와는 관련 없음) |
| Qt.Key_Print | Print 키 |
| Qt.Key_SysReq | SysReq 키 |
| Qt.Key_Clear | Apple 키보드의 Clear 키 (다른 시스템에서는 Num Lock이 꺼진 상태에서 숫자 패드의 5와 매핑됨) |
| Qt.Key_Home | Home 키 |
| Qt.Key_End | End 키 |
| Qt.Key_Left | 왼쪽 방향키 |
| Qt.Key_Up | 위쪽 방향키 |
| Qt.Key_Right | 오른쪽 방향키 |
| Qt.Key_Down | 아래쪽 방향키 |
| Qt.Key_PageUp | Page Up 키 |
| Qt.Key_PageDown | Page Down 키 |
| Qt.Key_Shift | Shift 키 |
| Qt.Key_Control | Control 키 (macOS에서는 Command 키) |
| Qt.Key_Meta | Meta 키 (macOS에서는 Control 키, Windows 키보드에서는 Windows 키) |
| Qt.Key_Alt | Alt 키 |
| Qt.Key_AltGr | AltGr 키 (Windows에서는 Ctrl+Alt 수정자가 함께 설정됨) |
| Qt.Key_CapsLock | Caps Lock 키 |
| Qt.Key_NumLock | Num Lock 키 |
| Qt.Key_ScrollLock | Scroll Lock 키 |
| Qt.Key_F1 ~ Qt.Key_F35 | F1 ~ F35 키 |
| Qt.Key_Super_L | 왼쪽 Super 키 |
| Qt.Key_Super_R | 오른쪽 Super 키 |
| Qt.Key_Menu | Menu 키 |
| Qt.Key_Hyper_L | 왼쪽 Hyper 키 |
| Qt.Key_Hyper_R | 오른쪽 Hyper 키 |
| Qt.Key_Help | Help 키 |
| Qt.Key_Direction_L | 왼쪽 방향키 |
| Qt.Key_Direction_R | 오른쪽 방향키 |
| Qt.Key_Space | Space 키 |
| Qt.Key_Any | Any 키 |
| Qt.Key_Exclam | Exclam 키 |
| Qt.Key_QuoteDbl | Quote Double 키 |
| Qt.Key_NumberSign | Number Sign 키 |
| Qt.Key_Dollar | Dollar 키 |
| Qt.Key_Percent | Percent 키 |
| Qt.Key_Ampersand | Ampersand 키 |
| Qt.Key_Apostrophe | 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_9 | 0 ~ 9 키 |
| Qt.Key_Colon | 콜론 키 |
| Qt.Key_Semicolon | 세미콜론 키 |
| Qt.Key_Less | Less 키 |
| Qt.Key_Equal | Equal 키 |
| Qt.Key_Greater | Greater 키 |
| Qt.Key_Question | 물음표 키 |
| Qt.Key_At | At 키 |
| Qt.Key_A ~ Qt.Key_Z | A ~ Z 키 |
| Qt.Key_BracketLeft | 왼쪽 대괄호 키 |
| Qt.Key_Backslash | 백슬래시 키 |
| Qt.Key_BracketRight | 오른쪽 대괄호 키 |
| Qt.Key_AsciiCircum | Ascii Circum 키 |
| Qt.Key_Underscore | 언더스코어 키 |
| Qt.Key_QuoteLeft | 왼쪽 따옴표 키 |
| Qt.Key_BraceLeft | 왼쪽 중괄호 키 |
| Qt.Key_Bar | 바 키 |
| Qt.Key_BraceRight | 오른쪽 중괄호 키 |
* 이외 기타 key는 아래 가이드 참고
key 이벤트 연결 예제소스
- keyPressEvent 이벤트 핸들러에 사용자 정의 함수를 오버라이드 한다.
self.ui.grd_list.keyPressEvent = self.e_keyPress - 여러개의 키를 조합하여 사용하는 방법
- event.modifiers() 함수는 직전에 입력한 키를 저장한다.
if event.key() == Qt.Key_Return and event.modifiers() & Qt.ControlModifier:
- event.modifiers() 함수는 직전에 입력한 키를 저장한다.
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
#================== Signal ====================
self.ui.grd_list.keyPressEvent = self.e_keyPress
#================== Slot ====================
def e_keyPress(self, event):
if event.key() == Qt.Key_Return and event.modifiers() & Qt.ControlModifier:
# 엔터키와 Ctrl키 조합하여 눌렀을 때 처리할 작업
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec()) 'Python' 카테고리의 다른 글
| pyinstaller 사용시 hidden import not found 에러, collect_all 함수 (0) | 2024.12.23 |
|---|---|
| PySide6, Qt Designer 설치 (0) | 2024.12.23 |
| Pyside6 QListWidget multiline 입력창 구현 (0) | 2024.12.23 |