我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在pyqt5中利用ComboBox实现一个鼠标点击触发事件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在pyqt5中利用ComboBox实现一个鼠标点击触发事件

怎么在pyqt5中利用ComboBox实现一个鼠标点击触发事件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一、自定义MyComboBox

# MyComboBox.pyfrom PyQt5.QtWidgets import QComboBoxfrom PyQt5.QtCore import pyqtSignal       class MyComboBox(QComboBox):  clicked = pyqtSignal()     #创建一个信号  def showPopup(self):      #重写showPopup函数    self.clicked.emit()     #发送信号    super(MyComboBox, self).showPopup()   # 调用父类的showPopup()

二、使用MyComboBox创建窗口空间

# test_ui.py    self.PrintersList = MyComboBox(self.groupBox) # 修改后    # self.PrintersList = QtWidgets.QComboBox(self.groupBox) # 修改前

三、main函数中对clicked 信号进行绑定

# main_loop.py  self.PrintersList.clicked.connect(self.scan_printer_list_slot)    # 信号与槽函数的绑定 # 槽函数的实现  def scan_printer_list_slot(self):   print("扫描打印机并刷新列表")

补充:PyQt5中QComboBox实现多选功能

网上大佬太多了,写的啥没看懂,自己摸索着也写了个出来,也勉强能用。

功能:

QComboBox实现多选功能

返回选中的文本列表

一键全选和取消全选功能

from PyQt5 import QtCore, QtGui, QtWidgetsimport sys class CheckableComboBox(QtWidgets.QComboBox):  def __init__(self, parent=None):    super(CheckableComboBox, self).__init__(parent)    self.setModel(QtGui.QStandardItemModel(self))    self.view().pressed.connect(self.handleItemPressed)    self.checkedItems = []    self.view().pressed.connect(self.get_all)    self.view().pressed.connect(self.getCheckItem)    self.status = 0   def handleItemPressed(self, index):              #这个函数是每次选择项目时判断状态时自动调用的,不用管(自动调用)    item = self.model().itemFromIndex(index)    if item.checkState() == QtCore.Qt.Checked:      item.setCheckState(QtCore.Qt.Unchecked)    else:      item.setCheckState(QtCore.Qt.Checked)   def getCheckItem(self):    # getCheckItem方法可以获得选择的项目列表,自动调用。    for index in range(1,self.count()):      item = self.model().item(index)      if item.checkState() == QtCore.Qt.Checked:        if item.text() not in self.checkedItems:          self.checkedItems.append(item.text())      else:        if item.text() in self.checkedItems:          self.checkedItems.remove(item.text())    print("self.checkedItems为:",self.checkedItems)    return self.checkedItems          #实例化的时候直接调用这个self.checkedItems就能获取到选中的值,不需要调用这个方法,方法会在选择选项的时候自动被调用。   def get_all(self):              #实现全选功能的函数(自动调用)    all_item = self.model().item(0)     for index in range(1,self.count()):    #判断是否是全选的状态,如果不是,全选按钮应该处于未选中的状态      if self.status ==1:        if self.model().item(index).checkState() == QtCore.Qt.Unchecked:          all_item.setCheckState(QtCore.Qt.Unchecked)          self.status = 0          break     if all_item.checkState() == QtCore.Qt.Checked:      if self.status == 0 :        for index in range(self.count()):          self.model().item(index).setCheckState(QtCore.Qt.Checked)          self.status = 1     elif all_item.checkState() == QtCore.Qt.Unchecked:      for index in range(self.count()):        if self.status == 1 :          self.model().item(index).setCheckState(QtCore.Qt.Unchecked)      self.status = 0 if __name__ == "__main__":  app = QtWidgets.QApplication(sys.argv)  dialog = QtWidgets.QMainWindow()  mainWidget = QtWidgets.QWidget()  dialog.setCentralWidget(mainWidget)  ComboBox = CheckableComboBox(mainWidget)  ComboBox.addItem("全选")  for i in range(6):    ComboBox.addItem("Combobox Item " + str(i))  dialog.show()  sys.exit(app.exec_())

总结(用法):

直接实例化一个Qcombox

使用ComboBox.addItem方法添加项目

调用ComboBox.checkedItems的属性就能获取到选中的文本列表

内置函数基本都是自动的,统统不用管

调用checkedItems属性的时候最后写在ComboBox的槽函数里,这样才能获取到更改后的属性,不然可能得到的会是空值。

补充:

定义一个槽函数self.get_checkedItems_slot用于获取更改后的checkedItems属性,下面三种ComboBox的信号槽选一种来用就行,推荐第一种。

ComboBox.activated.connect(self.get_checkedItems_slot) #推荐ComboBox.highlighted.connect(self.get_checkedItems_slot)ComboBox.currentIndexChanged.connect(self.get_checkedItems_slot)

关于怎么在pyqt5中利用ComboBox实现一个鼠标点击触发事件问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在pyqt5中利用ComboBox实现一个鼠标点击触发事件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在pyqt5中利用ComboBox实现一个鼠标点击触发事件

怎么在pyqt5中利用ComboBox实现一个鼠标点击触发事件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、自定义MyComboBox# MyComboBox.pyfr
2023-06-14

C#中怎么利用listbox实现一个双击事件

这篇文章将为大家详细讲解有关C#中怎么利用listbox实现一个双击事件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。private void Page_Load(object sender
2023-06-17

怎么在Python中利用tkinter库实现投放鼠标模拟点击器

本篇文章为大家展示了怎么在Python中利用tkinter库实现投放鼠标模拟点击器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等
2023-06-14

怎么在html5中利用canvas实现一个背景鼠标连线动态效果

本篇文章为大家展示了怎么在html5中利用canvas实现一个背景鼠标连线动态效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
2023-06-09

javascript在一个拖动过程中,释放鼠标键时触发此事件使用什么函数,详细讲解

在JavaScript中,当释放鼠标键时触发"mouseup"事件,用于检测鼠标指针从元素上抬起时的松开操作。通过将事件监听器附加到元素,可以访问事件信息,如鼠标坐标和按下的按钮。在拖放操作中,"mouseup"事件非常有用,可用于检测释放鼠标键并完成拖放动作。实现拖放还需使用"mousedown"(按下鼠标键)和"mousemove"(拖动鼠标)事件。
javascript在一个拖动过程中,释放鼠标键时触发此事件使用什么函数,详细讲解
2024-04-02

怎么在Android应用中利用 scrollToTop实现一个点击回到顶部功能

本篇文章给大家分享的是有关怎么在Android应用中利用 scrollToTop实现一个点击回到顶部功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。实现方法布局代码:
2023-05-31

怎么在Java中利用JavaMail实现一个邮件发送功能

这期内容当中小编将会给大家带来有关怎么在Java中利用JavaMail实现一个邮件发送功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. 电子邮件协议电子邮件的在网络中传输和网页一样需要遵从特定的协议
2023-05-31

怎么在Android应用中利用ListView实现一个监听滑动事件

怎么在Android应用中利用ListView实现一个监听滑动事件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。ListView的主要有两种滑动事件监听方法,OnTouchLi
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录