侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

pyqt5的QComboBox 使用模板的具体方法

Python  /  管理员 发布于 5年前   316

QComboBox 的常规使用方法,在这个使用模板里,基本都有了。

QComboBox小部件是一个组合的按钮和弹出列表。

QComboBox提供了一种向用户呈现选项列表的方式,其占用最小量的屏幕空间。

组合框是一个显示当前项目的选择小部件,可以弹出可选项目列表。组合框可以是可编辑的,允许用户修改列表中的每个项目。

组合框可以包含图像以及字符串; 当然insertItem()和setItemText()函数需要适当重载。对于可编辑组合框,提供了函数clearEditText(),以清除显示的字符串而不更改组合框的内容。

如果组合框的当前项目发生更改,则会发出两个信号currentIndexChanged()和activated()。无论以编程方式或通过用户交互完成更改,currentIndexChanged()总是被发射,而只有当更改是由用户交互引起时才activated() 。highlighted()信号在用户突出显示组合框弹出列表中的项目时发出。所有三个信号都有两个版本,一个带有str参数,另一个带有int参数。如果用户选择或突出显示一个图像,则只会发出int信号。每当可编辑组合框的文本发生改变时,editTextChanged()信号就会发出。

当用户在可编辑的组合框中输入一个新的字符串时,该小部件可能会插入它,也可能不会插入它,并且可以将它插入到多个位置。默认策略是InsertAtBottom,但您可以使用setInsertPolicy()更改它。

可以使用QValidator将输入约束为可编辑的组合框;请参阅setValidator()。默认情况下,接受任何输入。

例如,可以使用插入函数insertItem()和insertItems()来填充组合框。可以使用setItemText()更改项目。一个项目可以使用removeItem()来移除,所有项目都可以使用clear()来移除。当前项目的文本由currentText()返回,项目的文本编号使用text()返回。当前项目可以使用setCurrentIndex()来设置。 count()返回组合框中的项目数;可以用setMaxCount()设置项目的最大数量。您可以允许使用setEditable()进行编辑。对于可编辑组合框,您可以使用setCompleter()设置自动完成,并且用户是否可以添加重复项由setDuplicatesEnabled()进行设置。

QComboBox为其弹出列表使用模型/视图框架并存储其项目。默认情况下,QStandardItemModel存储项目,QListView子类显示弹出列表。您可以直接访问模型和视图(使用model()和view()),但QComboBox还提供了设置和获取项目数据的函数(例如,setItemData()和itemText())。您还可以设置新的模型和视图(使用setModel()和setView())。对于组合框标签中的文本和图标,将使用具有Qt.DisplayRole和Qt.DecorationRole的模型中的数据。请注意,您不能通过使用setSelectionMode()来更改view()的SelectionMode。

类归属

PyQt5->QtWidgets->QComboBox

继承关系

PyQt5->QObject and QPaintDevice->QWidget->QFontComboBox->QComboBox

熟悉一下代码,直接就可以用了。

【如下代码,完全复制,直接运行,即可使用】

import sysfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *################################################items_list=["C","C++","Java","Python","JavaScript","C#","Swift","go","Ruby","Lua","PHP"]datas_list=[1972,1983,1995,1991,1992,2000,2014,2009,1995,1993,1995]################################################class Widget(QWidget):  def __init__(self, *args, **kwargs):    super(Widget, self).__init__(*args, **kwargs)    layout = QVBoxLayout(self)    self.combobox1 = QComboBox(self, minimumWidth=200)    self.combobox2 = QComboBox(self, minimumWidth=200)    self.combobox3 = QComboBox(self, minimumWidth=200)    self.combobox4 = QComboBox(self, minimumWidth=200)    layout.addWidget(QLabel("增加单项,不带数据", self))    layout.addWidget(self.combobox1)    layout.addItem(QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))    layout.addWidget(QLabel("增加单项,附带数据", self))    layout.addWidget(self.combobox2)    layout.addItem(QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))    layout.addWidget(QLabel("增加多项,不带数据", self))    layout.addWidget(self.combobox3)    layout.addItem(QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))    layout.addWidget(QLabel("设置模型,不带数据", self))    layout.addWidget(self.combobox4)    #初始化combobox    self.init_combobox1()    self.init_combobox2()    self.init_combobox3()    self.init_combobox4()    #增加选中事件    self.combobox1.activated.connect(self.on_combobox1_Activate)    self.combobox2.activated.connect(self.on_combobox2_Activate)    self.combobox3.activated.connect(self.on_combobox3_Activate)    self.combobox4.activated.connect(self.on_combobox4_Activate)  ####### addItem() 增加单项元素,不带数据 #########  def init_combobox1(self):    for i in range(len(items_list)):      self.combobox1.addItem(items_list[i])    self.combobox1.setCurrentIndex(-1)  def on_combobox1_Activate(self, index):    print(self.combobox1.count())    print(self.combobox1.currentIndex())    print(self.combobox1.currentText())    print(self.combobox1.currentData())    print(self.combobox1.itemData(self.combobox1.currentIndex()))    print(self.combobox1.itemText(self.combobox1.currentIndex()))    print(self.combobox1.itemText(index))  ####### addItem() 增加单项元素,附带数据 #########  def init_combobox2(self):    for i in range(len(items_list)):      self.combobox2.addItem(items_list[i],datas_list[i])    self.combobox2.setCurrentIndex(-1)  def on_combobox2_Activate(self, index):    print(self.combobox2.count())    print(self.combobox2.currentIndex())    print(self.combobox2.currentText())    print(self.combobox2.currentData())    print(self.combobox2.itemData(self.combobox2.currentIndex()))    print(self.combobox2.itemText(self.combobox2.currentIndex()))    print(self.combobox2.itemText(index))  ####### addItems() 增加多项元素,不带数据 #########  def init_combobox3(self):    self.combobox3.addItems(items_list)    self.combobox3.setCurrentIndex(-1)  def on_combobox3_Activate(self, index):    print(self.combobox3.count())    print(self.combobox3.currentIndex())    print(self.combobox3.currentText())    print(self.combobox3.currentData())    print(self.combobox3.itemData(self.combobox3.currentIndex()))    print(self.combobox3.itemText(self.combobox3.currentIndex()))    print(self.combobox3.itemText(index))  ####### setModel() 设置数据模型,不带数据 #########  def init_combobox4(self):    self.tablemodel = QStringListModel(items_list)    self.combobox4.setModel(self.tablemodel)    self.combobox4.setCurrentIndex(-1)  def on_combobox4_Activate(self, index):    print(self.combobox4.count())    print(self.combobox4.currentIndex())    print(self.combobox4.currentText())    print(self.combobox4.currentData())    print(self.combobox4.itemData(self.combobox4.currentIndex()))    print(self.combobox4.itemText(self.combobox4.currentIndex()))    print(self.combobox4.itemText(index))if __name__ == "__main__":  app = QApplication(sys.argv)  w = Widget()  w.show()  sys.exit(app.exec_())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


  • 上一条:
    pycharm安装和首次使用教程
    下一条:
    pygame实现简易飞机大战
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客