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

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

by ★√★ 2021. 3. 1.

 안녕하세요, 이번 포스팅에서는 Mouse Click 관련 이벤트 구현하는 사항에 대해서 설명 드리도록 하겠습니다. 일단 가장 많이 쓰이는 LEFT, RIGHT 그리고 WHEEL Click 시 일어나는 이벤트 위주로 설명 드리도록 하겠습니다.

 

 

Pyqt5-마우스-클릭-썸네일
Pyqt5-마우스-클릭

 

 이번 포스팅에서 설명 드리는 내용인 Mouse Click 관련 이벤트 구현하는 사항과 이전 포스팅에서 설명 드렸던 Mouse Movement tracking 하는 이벤트와 연계해서 사용하시면 더 유용한 프로그램을 개발하실 수 있을 거 같습니다.

 

 

1. mousePressEvent(self, event (or e) 함수 이용하기

 

: Pyqt5 내 사용하는 함수로서, Mouse를 눌렀을 때 발생하는 event를 정리하는 함수라고 생각하시면 더 이해하기 편하실 겁니다. 2개의 argument를 받고 있는데, 주로, "event (or e)" 항목에서 매소드를 이용하는 걸로 생각하시면 됩니다. 아래 Snap Shot은 Pyqt official Website에서 발췌한 내용입니다. 참조 하시면 됩니다. 

[참조 자료 출처 : doc.qt.io/qt-5/qwidget.html#mousePressEvent ]

 

 

Pyqt5-마우스-클릭-코드-구현-사진1
Pyqt5-마우스-클릭-코드-구현-사진1
Pyqt5-마우스-클릭-코드-구현-사진2

 

 

2. mouseButtonKind 임의 함수 만들어서 Event Case 만들기

 

: mousePressEvent 발생 시, 경우 수를 여러 개 설정하여, 그 Case 마다, 어떤 이벤트가 발생하는지를 선언하는 함수라고 이해하시면 됩니다. 예를 들어, 왼쪽 마우스 키를 누르면 Status Bar에 "Left" 라고 찍혀라. 이런 이벤트를 선언할 수도 있습니다. 

 

    def mouseButtonKind(self, buttons):

       if buttons & Qt.LeftButton:
          self.statusbar.showMessage('Mouse Click Left')

       if buttons & Qt.MidButton:
          self.statusbar.showMessage('Mouse Click Middle(Wheel)')

       if buttons & Qt.RightButton:
          self.statusbar.showMessage('Mouse Click Right')

 

 

3. Mouse Click 이벤트 구현 코드 구현하기

 

: 1번, 2번에서 설명한 함수를 이용하여, Mouse Click 이벤트 구현 코드를 작성해보도록 하겠습니다. 필요 라이브러리까지 같이 선언해드리도록 하겠습니다. 추가적으로 주석에 설명 드리니, 이해하시기 쉬우실 겁니다.

 

# 필요한 라이브러리 / 패키지 선언
from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget
from PyQt5.QtCore import Qt
import sys

# Mouse_Click_Event 이라는 Class를 선언하여, Form Pop-up 메뉴 선언
class Mouse_Click_Event(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setMouseTracking(True)
        self.setWindowTitle('Mouse Click Event Demonstration')
        self.resize(320, 240)
        self.statusbar = self.statusBar()
        self.show()
    
    # Case 변 나타내는 Event를 설정하는 함수
    def mouseButtonKind(self, buttons):

       if buttons & Qt.LeftButton:
          self.statusbar.showMessage('Mouse Click Left')

       if buttons & Qt.MidButton:
          self.statusbar.showMessage('Mouse Click Middle(Wheel)')

       if buttons & Qt.RightButton:
          self.statusbar.showMessage('Mouse Click Right')

    
    # Mouse를 클릭하게 되었을 때 발생하는 Event 설정
    def mousePressEvent(self, e): # e 는 QMouseEvent 받는 변수
        self.mouseButtonKind(e.buttons())

 

- 위 코드를 실행 시키면 아래와 같이 프로그램이 실행 되는 것을 확인하실 수 있습니다. 차례로, LEFT 버튼 Click시, RIGHT 버튼 Click시 그리고 마지막으로, Wheel 버튼 클릭 시 발생하는 이벤트 입니다. 실제로 마우스 왼쪽, 오른쪽 그리고 가운데 Wheel 버튼 눌러서 발생하는 이벤트 입니다.

 

Pyqt5-마우스-클릭-코드-구현-사진2
Pyqt5-마우스-클릭-코드-구현-사진3

 

 이상입니다. 이 전에 공유 드렸던 Mouse Tracking Code와 함께, 혼합해서 사용하면 평상시에 구현하고 싶어하는 자동 프로그램도 구현할 수 있지 않을까 합니다. 간단한 사항은 구현이 가능하겠지만, 좀 Detailed하고, 구현하는 데이터가 많은 경우에는 DB를 활용해야 하는 것을 고려하셔야 합니다. 그럼 오늘도 공부하느라고 수고 많이 하셨구요. 같이 열심히 공부하고 같이 성장하시죠! 감사합니다.

 

 

 제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다. 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

728x90

댓글


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