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


Posted in Python onSeptember 06, 2018

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

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

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

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

import sys
from 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_())

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

Python 相关文章推荐
Python进程间通信用法实例
Jun 04 Python
在Python的Django框架中显示对象子集的方法
Jul 21 Python
安装Python和pygame及相应的环境变量配置(图文教程)
Jun 04 Python
python 重定向获取真实url的方法
May 11 Python
创建pycharm的自定义python模板方法
May 23 Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 Python
对python中词典的values值的修改或新增KEY详解
Jan 20 Python
python贪吃蛇游戏代码
Apr 18 Python
使用pycharm在本地开发并实时同步到服务器
Aug 02 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
python修改linux中文件(文件夹)的权限属性操作
Mar 05 Python
python操作redis数据库的三种方法
Sep 10 Python
Python多线程编程之多线程加锁操作示例
Sep 06 #Python
python中将\\uxxxx转换为Unicode字符串的方法
Sep 06 #Python
Python json模块dumps、loads操作示例
Sep 06 #Python
Python 字符串换行的多种方式
Sep 06 #Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 #Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 #Python
python使用__slots__让你的代码更加节省内存
Sep 05 #Python
You might like
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
用javascript获取textarea中的光标位置
2008/05/06 Javascript
Ext 今日学习总结
2010/09/19 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
高二英语教学反思
2014/01/19 职场文书
校优秀毕业生主要事迹
2014/05/26 职场文书
企业标语口号
2014/06/10 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
永不妥协观后感
2015/06/10 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL
tree shaking对打包体积优化及作用
2022/07/07 Java/Android