안녕하세요, Davey입니다. 오늘 포스팅할 내용은 PyQt5에서 Mouse Event의 하나인 Mouse Tracking 하는 이벤트 구현하는 항목에 대해서 포스팅을 하도록 하겠습니다
실제적으로, Mouse Tracking을 통해서, 특정 위치에서 추가적인 이벤트를 구현해서, 사용자의 Needs를 맞추는데 도움이 되실 겁니다.
1. setMouseTracking( ) 이해하기
: 마우스 클릭 시와 클릭 하지 않았을 때 마우스 감지 Activation을 할지 안할지에 대한, Bool Type 함수로서, True와 False시에 작동하는 Concept은 아래와 같습니다.
1) True 설정시에는, 마수스 클릭 안해도 마우스 이동 감지
2) False 값 설정시에는, 마우스 클릭시에만 마우스 이동 감지.
- 이 부분은 아래 Link를 통해서 더 자세한 사항은 체크 해보실 수 있습니다.
2. mouseMoveEvent(event)
: 마우스 Tracking을 위해서 Cover해야 할 범위를 정의 하는 함수라고 생각하시면 이해가 빠르실겁니다. 크게, widget, 즉 Window 화면상에 보이는 Pop Up 화면이라고 생각하시면 됩니다. 그리고 그냥 Window 화면에서 전체적으로 다 Tracking 하는 방법 이렇게 2가지 방법이 있습니다. 아래 사항 참조 부탁 드립니다.
1) event.globalX(), event.globalY() ; Window 화면내의 마우스 좌표
2) event.x(), event.y() ; widget 내의 마우스 좌표
3. Mouse Tracking 이벤트 구현 코드
: 위 2개의 함수를 이용하여, Mouse Tracking 이벤트 구현코드를 작성해보도록 하겠습니다. 필요한 라이브러리와 패키지는 선언을 하고 Mouse_Location_Tracking이라는 QMainWindow Type의 Class를 선언하여 구현하였습니다.
# Mouse Location Tracking을 위한 라이브러리 / 패키지 선언
import sys
from PyQt5.QtWidgets import *
class Mouse_Location_Tracking(QMainWindow):
def __init__(self):
super().__init__()
self.statusbar = self.statusBar()
# True 일경우에는 Mouse Button 누른 상태가 아니라도 Mouse Tracking 이 활성화됨
# False 인 경우는 임의적으로 Mouse Button을 눌러야, Mouse Tracking 이 활성화됨.
self.setMouseTracking(False)
self.setGeometry(500, 200, 500, 400)
self.show()
def mouseMoveEvent(self, event):
MouseTracking_Location = "Tracking For Mouse Location ; x axis={0},y axis={1}, global x, y axis={2},{3}".format(event.x(), event.y(), event.globalX(), event.globalY())
self.statusbar.showMessage(MouseTracking_Location)
# print(event.globalX())
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Mouse_Location_Tracking()
sys.exit(app.exec_())
- 위 코드를 실행을 해보면 먼저 아래와 같이 Pop-up 창이 뜨면서 실행이 되게 됩니다. 제가 구현되는 것도 같이 첨부하여 보여드리도록 하겠습니다.
이상입니다. 단순히 Mouse Location Tracking으로 사용하는 게 아니고, 마우스가 위치한 Location을 기반으로 RPA 같은 자동화 시스템을 구축 할 수 있습니다. 다소, 사용자의 Case에 따라 구현되는 게 복잡할 수도 있지만, 이것도 한 걸음이라고 생각하고 더 공부해보려고 합니다. 그럼 같이 공부하시고, 같이 성장하시죠! 감사합니다.
제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.
[참조 자료 출처]
1) http://doc.qt.io/qt-5/qwidget.html#mouseTracking-prop
2) http://doc.qt.io/qt-5/qwidget.html#mouseMoveEvent
3) http://doc.qt.io/qt-5/qmouseevent.html
[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]
'파이썬 (Python) > 파이썬 GUI + PyQt5' 카테고리의 다른 글
파이썬 Python의 GUI 구현 PyQt5 Keyboard Click 이벤트 구현하기 (0) | 2021.03.01 |
---|---|
파이썬 Python의 GUI 구현 PyQt5 Mouse Click 이벤트 구현하기 (0) | 2021.03.01 |
파이썬 Python의 GUI 구현 PyQt5 Designer 이용 방법 (0) | 2021.02.28 |
파이썬 Python GUI 구현 PyQt5 QComboBox 활용하기 (2) | 2021.02.28 |
파이썬 Python GUI 구현 QPushButton 구현하기 (2) | 2021.01.27 |
댓글