본문으로 바로가기
반응형

윈도우에서 감지하는 마우스 휠 정보는 QWheelEvent 에 담겨져 있습니다. QWheelEvent wheelEvent 이벤트 함수에서 받을 수 있습니다. wheelEvent 함수는 QWidget 에서 제공하는 마우스 휠 관련 정보를 수신할 수 있는 가상함수입니다. 가상함수란 파생 클래스에서 다시 재정의가 가능한 함수를 말합니다. 보통 상속받은 클래스의 이벤트를 이용하고 싶을 때 제공하는 가상함수를 많이 사용합니다. QWidget 에는 마우스 휠 이벤트를 제공하는 가상함수가 있습니다. 그것이 바로 가상함수 wheelEvent 입니다. QMainWindow 클래스도 QWidget 을 상속받았기 때문에 사용이 가능합니다.

 

wheelEvent() 이벤트 핸들러 함수로 QWheelEvent 객체를 받습니다. 소스를 실행하고 마우스를 위/아래로 움직여 보세요. wheelEvent() 이벤트 함수가 실행되고 콘솔에 값을 출력합니다.

#-*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtGui import QWheelEvent

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setGeometry(100, 100, 600, 300)
        self.setWindowTitle('Mouse Wheel Event')

    def wheelEvent(self, event: QWheelEvent):
        print('Wheel Event')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

 

wheelEvent() 함수에서 전송받은 QWheelEvent 로부터 마우스 커서에 관한 많은 정보를 얻을 수 있습니다. angelDelta() 함수는 QPoint 객체를 넘기는데, 마우스 휠을 움직인 크기 값이 들어 있습니다. x() 값는 휠을 좌/우로 움직인 거리값입니다. 일반적인 마우스는 좌/우로 볼을 움직일 수 없으므로 angelDelta().x() 값은 0 입니다. angelDelta().y() 는 위/아래를 움직인 거리값입니다. 휠을 아래로 움직이면 마이너스(-), 위로 움직일 경우 플러스(+) 값을 출력합니다

#-*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtGui import QWheelEvent

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setGeometry(100, 100, 600, 300)
        self.setWindowTitle('Mouse Wheel Event')

    def wheelEvent(self, event: QWheelEvent):
        print(event.angleDelta().x())
        print(event.angleDelta().y())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

반응형