• PyQT区分左键双击和左键单击


        在PyQt中没有直接提供左键双击的判断方法,需要自己实现,其思路主要如下所示:

    • 1、起动一个定时器,判断在指定的时间之内,点击次数超过2次,则视为双击(其主要思路判断两次点击的时间差在预测的条件以内)
    • 2、 起动一个定时器,判断在指定的时间之内,点击次数超过2次,另外再获取鼠标点击的坐标,如果前后两次点击的坐标位置,属于同一个位置,满足这两个条件则判断为双击(其主要思路判断两次点击的时间差在预测的条件以内,且点击的坐标在预设的坐标之内,允许存在一定的偏差)
    
    from PyQt5.QtCore import QTimer
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    class myWidgets(QtWidgets.QTableWidget):  
    
        def __init__(self, parent=None):
            super(myWidgets, self).__init__(parent)
            self.isDoubleClick = False
            self.mouse = ""
        def mousePressEvent(self, e): 
            # 左键按下
            if e.buttons() == QtCore.Qt.LeftButton:
                QTimer.singleShot(0, lambda: self.judgeClick(e))
            # 右键按下
            elif e.buttons() == QtCore.Qt.RightButton:
                self.mouse = "右"
            # 中键按下
            elif e.buttons() == QtCore.Qt.MidButton:
                self.mouse = '中'
            # 左右键同时按下
            elif e.buttons() == QtCore.Qt.LeftButton | QtCore.Qt.RightButton:
                self.mouse = '左右'
            # 左中键同时按下
            elif e.buttons() == QtCore.Qt.LeftButton | QtCore.Qt.MidButton:
                self.mouse = '左中'
            # 右中键同时按下
            elif e.buttons() == QtCore.Qt.MidButton | QtCore.Qt.RightButton:
                self.mouse = '右中'
            # 左中右键同时按下
            elif e.buttons() == QtCore.Qt.LeftButton | QtCore.Qt.MidButton | QtCore.Qt.RightButton:
                self.mouse = '左中右'
        def mouseDoubleClickEvent(self,e):
            # 双击
            self.mouse = "双击"
            self.isDoubleClick=True
    
        def judgeClick(self,e):
            if self.isDoubleClick== False:
               self.mouse="左"
            else:
                self.isDoubleClick=False
                self.mouse = "双击"
    

    from PyQt5.QtCore import QTimer
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    class myWidgets(QtWidgets.QTableWidget):
    
        def __init__(self, parent=None):
            super(myWidgets, self).__init__(parent)
            self.mouse = ""
            self.timer=QTimer(self)
            self.timer.timeout.connect(self.singleClicked)
    
        def singleClicked(self):
            if self.timer.isActive():
                self.timer.stop()
                self.mouse="左"
    
        def mouseDoubleClickEvent(self,e):
            if self.timer.isActive() and e.buttons() ==QtCore.Qt.LeftButton:
                self.timer.stop()
                self.mouse="双击"
            super(myWidgets,self).mouseDoubleClickEvent(e)
    
        def mousePressEvent(self,e):
            if e.buttons()== QtCore.Qt.LeftButton:
                self.timer.start(1000)
            elif e.buttons()== QtCore.Qt.RightButton:
                self.mouse="右"
            super(myWidgets,self).mousePressEvent(e)
    
  • 相关阅读:
    java集合
    linux网络配置(iproute2)
    linux网络配置(ifcfg)
    linuxshell编程之数组和字符串处理工具
    linux网络配置文件
    linux 内核版本和发行版本区别
    linux 相关零碎知识整理
    linux计算机网络基础
    linux bash编程之函数和循环控制
    linux bash shell编程之参数变量和流程控制。
  • 原文地址:https://www.cnblogs.com/surpassme/p/12812346.html
Copyright © 2020-2023  润新知