文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-14 06:03

关注

怎么在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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯