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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
python将ip地址转换成整数的方法
Mar 17 Python
win10系统中安装scrapy-1.1
Jul 03 Python
python通过opencv实现批量剪切图片
Nov 13 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
python用户评论标签匹配的解决方法
May 31 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
pygame实现贪吃蛇游戏(上)
Oct 29 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
python实现三壶谜题的示例详解
Nov 02 Python
python 实用工具状态机transitions
Nov 21 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
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
jQuery简单创建节点的方法
2016/09/09 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
vue实现评论列表功能
2019/10/25 Javascript
jQuery弹框插件使用方法详解
2020/05/26 jQuery
python安装以及IDE的配置教程
2015/04/29 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
python 通过文件夹导入包的操作
2020/06/01 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
测绘工程专业个人自我评价
2013/12/01 职场文书
档案接收函范文
2014/01/10 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
走群众路线剖析材料
2014/10/09 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL