PyQt5重写QComboBox的鼠标点击事件方法


Posted in Python onJune 25, 2019

最近学PyQt5,想要做一个串口调试助手来练练手,之前用了正点原子的串口上位机,觉得点击ComboBox自动检测串口这个功能很棒,之前用QT5写串口调试助手的时候也想加入这个功能,但是一直没有成功,之后就不了了之,现在用了PyQt之后就想着一定要实现这个功能,百度了之后看了很多资料都没有找到直接的解决方法,但是大家都是在强调重写鼠标点击事件,然后自己慢慢实验终于写出来了。

我的开发环境是PyCharm+Python3.6+PyQt5.9.2

1、建立工程创建界面什么的我就不写了,百度一大堆,重点就在重写QComboBox中的showPopup函数,我生成的界面文件为MainWidget.py。

2、我一直想最大化QTDesigner的作用,我看到有一位网友是重写了再进行布局,我觉得这样很麻烦,所以我的做法是把布局都做好了,再转换成py文件之后,修改里面的代码,布局就不放出来,很渣,直接看代码。

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QComboBox
from PyQt5.QtCore import pyqtSignal  #导入这个模块才可以创建信号

class MyComboBox(QComboBox):
  popupAboutToBeShown = pyqtSignal()   #创建一个信号
  # def mousePressEvent(self, QMouseEvent):#这个是重写鼠标点击事件
  #   self.popupAboutToBeShown.emit()
  def showPopup(self):          #重写showPopup函数
    self.popupAboutToBeShown.emit()   #发送信号

这样重写就完成了,我之前想的是重写鼠标点击事件,也就是上面代码中重写鼠标点击事件,但是经过实验,重写这个函数之后下拉列表就弹不出来了,后来研究了一下,在QComboBox中应该是鼠标点击事件触发了下拉函数showPopup,所以改为重写showPopup。

通过查看QT帮助文档可以看到

virtual void showPopup()

virtual关键字用于修改方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。

3、接下来就是修改建立界面的代码,只需要修改一行,原代码如下

self.ComBox = QtWidgets.QComboBox(self.splitter)

原代码是调用QComboBox类,也就是showPopup函数没有修改过,将其改为

self.ComBox = MyComboBox(self.splitter)

这是调用了重写后的类,其他的QComboBox控件不做修改,其功能就还是正常的。

最后绑定信号与槽

self.ComBox.popupAboutToBeShown.connect(Form.refresh)

refresh槽函数在新建的py文件中定义

以上这篇PyQt5重写QComboBox的鼠标点击事件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
Nov 30 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
Python Flask框架模板操作实例分析
May 03 Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 Python
python3中的eval和exec的区别与联系
Oct 10 Python
python requests包的request()函数中的参数-params和data的区别介绍
May 05 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 23 Python
基于python实现计算两组数据P值
Jul 10 Python
django和flask哪个值得研究学习
Jul 31 Python
python 如何实现遗传算法
Sep 22 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 #Python
PyQt5下拉式复选框QComboCheckBox的实例
Jun 25 #Python
在Pandas中处理NaN值的方法
Jun 25 #Python
python实现websocket的客户端压力测试
Jun 25 #Python
python中metaclass原理与用法详解
Jun 25 #Python
python实现接口并发测试脚本
Jun 25 #Python
Python实现EXCEL表格的排序功能示例
Jun 25 #Python
You might like
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
Python中关于字符串对象的一些基础知识
2015/04/08 Python
Python数组定义方法
2016/04/13 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
Python求解正态分布置信区间教程
2019/11/20 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
Python中and和or如何使用
2020/05/28 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
N:Philanthropy官网:美国洛杉矶基础款服装
2020/06/09 全球购物
护士实习自我鉴定
2013/10/22 职场文书
公关关系专员的自我评价分享
2013/11/20 职场文书
五一服装活动方案
2014/01/11 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
优秀党员个人总结
2015/02/14 职场文书
大二学年个人总结
2015/03/03 职场文书
大学生暑期实践报告
2015/07/13 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python