한국어
파이썬
 

PyQt4 [PyQt4]마우스 클릭 이벤트 예제 코드

pjk 2014.08.26 17:27 조회 수 : 6789


from PyQt4 import QtCore, QtGui

class CustomButton(QtGui.QPushButton):

    left_clicked= QtCore.pyqtSignal(int)
    right_clicked = QtCore.pyqtSignal(int)

    def __init__(self, *args, **kwargs):
        QtGui.QPushButton.__init__(self, *args, **kwargs)
        self.timer = QtCore.QTimer()
        self.timer.setInterval(250)
        self.timer.setSingleShot(True)
        self.timer.timeout.connect(self.timeout)
        self.left_click_count = self.right_click_count = 0

    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton:
            self.left_click_count += 1
            if not self.timer.isActive():
                self.timer.start()
        if event.button() == QtCore.Qt.RightButton:
            self.right_click_count += 1
            if not self.timer.isActive():
                self.timer.start()

    def timeout(self):
        if self.left_click_count >= self.right_click_count:
            self.left_clicked.emit(self.left_click_count)
        else:
            self.right_clicked.emit(self.right_click_count)
        self.left_click_count = self.right_click_count = 0


class MyDialog(QtGui.QDialog):
    def __init__(self, parent=None):
        super(MyDialog, self).__init__(parent)
        self.button1 = CustomButton("Button 1")
        hbox = QtGui.QHBoxLayout()
        hbox.addWidget(self.button1)
        self.setLayout(hbox)
        self.button1.left_clicked[int].connect(self.left_click)
        self.button1.right_clicked[int].connect(self.right_click)

    def left_click(self, nb):
        if nb == 1: print('Single left click')
        else: print('Double left click')

    def right_click(self, nb):
        if nb == 1: print('Single right click')
        else: print('Double right click')


if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    w = MyDialog()
    w.show()
    sys.exit(app.exec_())

번호 제목 글쓴이 날짜 조회 수
24 pybind11 에 대해서 makersweb 2023.07.23 1988
23 pydbus 바인딩을 이용하여 서비스 데몬과 D-Bus통신 file makersweb 2018.03.12 2112
22 우분투에 Python새 버전 설치 사용법 pjk 2015.02.10 3203
21 명령어 한줄로 내컴퓨터를 웹서버로 file 운영자 2019.01.25 3499
20 QML 및 Window 투명처리 file makersweb 2015.04.22 4051
19 다른 디렉터리의 파일(모듈) import 하기 pjk 2014.08.22 4697
18 How to Use Freeze pjk 2014.09.06 4773
17 Qt For Python(PySide2) QML 프로젝트 예제 file makersweb 2019.10.17 4827
16 print를 로그파일로 생성하기 (log출력 Redirection) makersweb 2015.03.18 5643
15 Python 문자열 관련 함수 레퍼런스 pjk 2014.08.29 6641
» [PyQt4]마우스 클릭 이벤트 예제 코드 pjk 2014.08.26 6789
13 파이썬으로 작성된 소스를 py2exe을 이용하여 윈도우 응용프로그램 빌드시 콘솔창 숨기기 pjk 2014.07.29 7596
12 [PyQt4]개발 프로그램 버전표시 메세지 박스 pjk 2014.09.02 7706
11 Python + QML with PyQt4 makersweb 2015.03.24 7912
10 Python으로 작성된 프로그램을 윈도우응용프로그램(exe)으로 빌드하기 file pjk 2014.08.03 8095
9 [PyQt4]윈도우창에 별 찍기 예제 file pjk 2014.08.19 8140
8 [PyQt4]multiprocess 예제 코드 pjk 2014.08.26 8159
7 [PyQt4]스레드 및 ProgressBar 예제 코드 file pjk 2014.08.26 8264
6 [Python]EXE또는 DLL파일의 버전정보를 알아내기위한 몇가지 방법 makersweb 2015.06.25 8723
5 Boost Python을 이용하여 python을 위한 C++ API 바인딩 [5] file makersweb 2017.01.08 9198