PyQt5重写QComboBox的鼠标点击事件
来源:互联网 发布:360医药软件 编辑:程序博客网 时间:2024/05/18 01:11
最近学PyQt5,想要做一个串口调试助手来练练手,之前用了正点原子的串口上位机,觉得点击ComboBox自动检测串口这个功能很棒,之前用QT5写串口调试助手的时候也想加入这个功能,但是一直没有成功,之后就不了了之,现在用了PyQt之后就想着一定要实现这个功能,百度了之后看了很多资料都没有找到直接的解决方法,但是大家都是在强调重写鼠标点击事件,然后自己慢慢实验终于写出来了。
我的开发环境是PyCharm+Python3.6+PyQt5.9.2
- 建立工程创建界面什么的我就不写了,百度一大堆,重点就在重写QComboBox中的showPopup函数,我生成的界面文件为MainWidget.py。
- 我一直想最大化QTDesigner的作用,我看到有一位网友是重写了再进行布局,我觉得这样很麻烦,所以我的做法是把布局都做好了,再转换成py文件之后,修改里面的代码,布局就不放出来,很渣,直接看代码。
from PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtWidgets import QComboBoxfrom 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文件中定义
阅读全文
0 0
- PyQt5重写QComboBox的鼠标点击事件
- ECharts重写鼠标右键点击事件
- 鼠标的点击事件
- 重写TabLayout的点击事件
- div的鼠标点击事件
- 重写QcomboBox
- PyQt5:重写事件处理方法(17)
- 重写鼠标事件
- tablayout重写点击事件
- Qt学习之路(7):事件初了解|重写鼠标点击事件
- C# 点击鼠标右键引发的事件
- JavaScript 鼠标点击事件的整合
- 鼠标点击不同位置触发的事件
- web中鼠标的点击事件
- PyQt5笔记(02) -- 按钮点击事件
- 模拟鼠标点击事件
- 关于鼠标点击事件
- 鼠标点击事件
- C++语言发展史
- B树和B+树
- 作业五
- 【Unity】【坑】Unity连接MySQL数据库
- 将Excel中内容按条插入Word表格中
- PyQt5重写QComboBox的鼠标点击事件
- java问题小结
- java网络编程 tcp
- Java线程池
- 机器学习算法与Python实践(11)
- ubuntu如何访问windows共享文件夹
- 数据库SQL开发规范
- 如何粗鲁地破坏一个单例模式
- Spark2.0特征提取、转换、选择之一:数据规范化,String-Index、离散-连续特征相互转换