基于PyQT实现区分左键双击和单击
在PyQt中没有直接提供左键双击的判断方法,需要自己实现,其思路主要如下所示:
1、起动一个定时器,判断在指定的时间之内,点击次数超过2次,则视为双击(其主要思路判断两次点击的时间差在预测的条件以内)
2、起动一个定时器,判断在指定的时间之内,点击次数超过2次,另外再获取鼠标点击的坐标,如果前后两次点击的坐标位置,属于同一个位置,满足这两个条件则判断为双击(其主要思路判断两次点击的时间差在预测的条件以内,且点击的坐标在预设的坐标之内,允许存在一定的偏差)
fromPyQt5.QtCoreimportQTimer fromPyQt5importQtCore,QtGui,QtWidgets classmyWidgets(QtWidgets.QTableWidget): def__init__(self,parent=None): super(myWidgets,self).__init__(parent) self.isDoubleClick=False self.mouse="" defmousePressEvent(self,e): #左键按下 ife.buttons()==QtCore.Qt.LeftButton: QTimer.singleShot(0,lambda:self.judgeClick(e)) #右键按下 elife.buttons()==QtCore.Qt.RightButton: self.mouse="右" #中键按下 elife.buttons()==QtCore.Qt.MidButton: self.mouse='中' #左右键同时按下 elife.buttons()==QtCore.Qt.LeftButton|QtCore.Qt.RightButton: self.mouse='左右' #左中键同时按下 elife.buttons()==QtCore.Qt.LeftButton|QtCore.Qt.MidButton: self.mouse='左中' #右中键同时按下 elife.buttons()==QtCore.Qt.MidButton|QtCore.Qt.RightButton: self.mouse='右中' #左中右键同时按下 elife.buttons()==QtCore.Qt.LeftButton|QtCore.Qt.MidButton|QtCore.Qt.RightButton: self.mouse='左中右' defmouseDoubleClickEvent(self,e): #双击 self.mouse="双击" self.isDoubleClick=True defjudgeClick(self,e): ifself.isDoubleClick==False: self.mouse="左" else: self.isDoubleClick=False self.mouse="双击"
或
fromPyQt5.QtCoreimportQTimer fromPyQt5importQtCore,QtGui,QtWidgets classmyWidgets(QtWidgets.QTableWidget): def__init__(self,parent=None): super(myWidgets,self).__init__(parent) self.mouse="" self.timer=QTimer(self) self.timer.timeout.connect(self.singleClicked) defsingleClicked(self): ifself.timer.isActive(): self.timer.stop() self.mouse="左" defmouseDoubleClickEvent(self,e): ifself.timer.isActive()ande.buttons()==QtCore.Qt.LeftButton: self.timer.stop() self.mouse="双击" super(myWidgets,self).mouseDoubleClickEvent(e) defmousePressEvent(self,e): ife.buttons()==QtCore.Qt.LeftButton: self.timer.start(1000) elife.buttons()==QtCore.Qt.RightButton: self.mouse="右" super(myWidgets,self).mousePressEvent(e)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
1 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法