본문 바로가기
파이썬 (Python)/파이썬 GUI + PyQt5

파이썬 Python의 GUI 구현 PyQt5 Mouse Tracking 이벤트 구현하기

by ★√★ 2021. 3. 1.

 안녕하세요, Davey입니다. 오늘 포스팅할 내용은 PyQt5에서 Mouse Event의 하나인 Mouse Tracking 하는 이벤트 구현하는 항목에 대해서 포스팅을 하도록 하겠습니다

 

파이썬-Mouse-Tracking-이벤트-썸네일
파이썬-Mouse-Tracking-이벤트

 

 실제적으로, Mouse Tracking을 통해서, 특정 위치에서 추가적인 이벤트를 구현해서, 사용자의 Needs를 맞추는데 도움이 되실 겁니다.

 

 

1. setMouseTracking( ) 이해하기

 

: 마우스 클릭 시와 클릭 하지 않았을 때 마우스 감지 Activation을 할지 안할지에 대한, Bool Type 함수로서, True와 False시에 작동하는 Concept은 아래와 같습니다. 

 

 1) True 설정시에는, 마수스 클릭 안해도 마우스 이동 감지

 2) False 값 설정시에는, 마우스 클릭시에만 마우스 이동 감지.

  

- 이 부분은 아래 Link를 통해서 더 자세한 사항은 체크 해보실 수 있습니다. 

 

QWidget Class | Qt Widgets 5.15.2

 

doc.qt.io

 

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-Tracking-이벤트-코드-구현-사진

 

 이상입니다. 단순히 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 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab