zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    Elasticsearch--预匹配器
    Elasticsearch--建议器
    Elasticsearch--聚合
    Elasticsearch--扩展索引结构
    Elasticsearch--更好的搜索_加权得分,脚本,同义词
    Elasticsearch--搜索
    信息论基础概念
    一个人的思想决定一个人的行为,一个人的行为决定一个人的习惯,一个人的习惯决定一个人的性格,一个人的性格决定一个人的命运,一个人的命运决定一个人的一生。
    宝塔的外网地址忘记 解决办法
    一定要先看文档 hyperf
  • 原文地址:https://www.cnblogs.com/surpassme/p/12812346.html
Copyright © 2011-2022 走看看