基于PyQT实现区分左键双击和单击


Posted in Python onMay 19, 2020

 在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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Tornado框架异步编程入门实例
Apr 24 Python
python相似模块用例
Mar 04 Python
Python三级目录展示的实现方法
Sep 28 Python
Python绘制3d螺旋曲线图实例代码
Dec 20 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
对python中的高效迭代器函数详解
Oct 18 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
简单了解python变量的作用域
Jul 30 Python
妙用itchat! python实现久坐提醒功能
Nov 25 Python
python列表推导式入门学习解析
Dec 02 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
Python更换pip源方法过程解析
May 19 #Python
解决Django Haystack全文检索为空的问题
May 19 #Python
浅谈django 重载str 方法
May 19 #Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 #Python
在Django中自定义filter并在template中的使用详解
May 19 #Python
Django Model中字段(field)的各种选项说明
May 19 #Python
Django模板获取field的verbose_name实例
May 19 #Python
You might like
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
JavaScript实现重置表单(reset)的方法
2015/04/02 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
Python变量赋值的秘密分享
2018/04/03 Python
Python 修改列表中的元素方法
2018/06/26 Python
python中树与树的表示知识点总结
2019/09/14 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
幼儿教师工作感言
2014/02/14 职场文书
庆祝国庆节标语
2014/10/09 职场文书
贷款收入证明范本
2015/06/12 职场文书
高老头读书笔记
2015/06/30 职场文书
《折线统计图》教学反思
2016/02/22 职场文书