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中使用元类的教程
Apr 28 Python
对python中return和print的一些理解
Aug 18 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
在Python中字典根据多项规则排序的方法
Jan 21 Python
python实现抖音点赞功能
Apr 07 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
MNIST数据集转化为二维图片的实现示例
Jan 10 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 Python
详解python 内存优化
Aug 17 Python
python 基于opencv操作摄像头
Dec 24 Python
Python基础知识之变量的详解
Apr 14 Python
pandas中DataFrame重置索引的几种方法
May 24 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
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
JS验证不重复验证码
2017/02/10 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
JS+CSS实现随机点名(实例代码)
2019/11/04 Javascript
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python使用正则表达式提取网页URL的方法
2015/05/26 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
普通大学毕业生自荐信范文
2014/02/23 职场文书
《老山界》教学反思
2014/04/08 职场文书
我爱我校演讲稿
2014/05/21 职场文书
公司租房协议书
2014/10/14 职场文书
师德师风整改措施
2014/10/24 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
JavaScript 对象创建的3种方法
2021/11/17 Javascript
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js