위젯이 수신하는 주요 이벤트 중에는 QMouseEvent 와 QKeyEvent 가 있다.
QMouseEvent는 위젯의 모든 마우스 움직임과 버튼 클릭에 대해 생성된다. 마우스 이벤트를 처리하는 데 사용할 수 있는 이벤트 핸들러는 다음과 같다.
Event handler | Behavior |
mouseMoveEvent | Mouse moved |
mousePressEvent | Mouse button pressed |
mouseReleaseEvent | Mouse button released |
mouseDoubleClickEvent | Double click detected |
QKeyEvent는 키보드의 입력에 대해 event가 생성된다. 키보드 이벤트를 처리하는데 사용할 수 있는 이벤트 핸들러는 다음과 같다.
Event handler | Behavior |
keyPressEvent | Keyboard를 누를때 |
keyReleaseEvent | Keyboard를 눌렀다 뗄때 |
간단한 예제를 살펴보도록 하자.
import sys
from PySide6.QtWidgets import QApplication, QLabel, QMainWindow
from PySide6.QtCore import Qt
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.label = QLabel("Click in this window")
self.setCentralWidget(self.label)
def mouseMoveEvent(self, e):
self.label.setText("mouseMoveEvent : " + str(e.pos().x()) + ", " + str(e.pos().y()))
def mousePressEvent(self, e):
self.label.setText("mousePressEvent : " + str(e.pos().x()) + ", " + str(e.pos().y()))
def mouseReleaseEvent(self, e):
self.label.setText("mouseReleaseEvent : " + str(e.pos().x()) + ", " + str(e.pos().y()))
def mouseDoubleClickEvent(self, e):
self.label.setText("mouseDoubleClickEvent : " + str(e.pos().x()) + ", " + str(e.pos().y()))
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.label.setText("keyPressEvent : Key_Escape")
def KeyReleaseEvent(self, e):
self.label.setText("KeyReleaseEvent")
app = QApplication(sys.argv)
window = MyWindow()
window.show()
app.exec()
마우스 동작에 대한 결과 값은 아래와 같다.
또한 키보드 동작에 대한 결과는 아래와 같다.
키보드에는 다양한 key들이 존재하고 있다.
관련 key에 대해서는 아래 주소에 좀 더 자세히 설명되어있다. 아래 값을 참고하여 다양한 key에 대해 처리할 수 있다.
https://doc.qt.io/qtforpython/PySide6/QtCore/Qt.html
KeyReleaseEvent() 함수는 호출이 되지 않는데.. 이 부분은 시간날 때 좀 더 살펴봐야할 듯 하다..
[PySide6] QComboBox 사용하기 (2) | 2021.09.09 |
---|---|
[PySide6] QTextBrowser 사용하기 (0) | 2021.09.03 |
[PySide6] QTextEdit 사용하기 (1) | 2021.09.03 |
[PySide6] Style sheet 사용법(WIP) (0) | 2021.09.03 |
[PySide6] QDockWidget 사용하기 (0) | 2021.09.03 |