基于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 相关文章推荐
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
Python实现的一个找零钱的小程序代码分享
Aug 25 Python
用pickle存储Python的原生对象方法
Apr 28 Python
Python安装Numpy和matplotlib的方法(推荐)
Nov 02 Python
Python最火、R极具潜力 2017机器学习调查报告
Dec 11 Python
python实现列表中最大最小值输出的示例
Jul 09 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
Python中zip()函数的简单用法举例
Sep 02 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 20 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
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
php跨站攻击实例分析
2014/10/28 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
解决python 输出是省略号的问题
2018/04/19 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
Linux的主要特性
2014/10/06 面试题
init进程的作用
2015/08/20 面试题
应聘面试自我评价
2014/01/24 职场文书
授权委托书样本
2014/04/03 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
购房个人委托书范本
2014/10/11 职场文书
广告业务员岗位职责
2015/02/13 职场文书
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS