效果图:

ui_ComboBox.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'ui_ComboBox.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(433, 193)
self.groupBox = QtWidgets.QGroupBox(Form)
self.groupBox.setGeometry(QtCore.QRect(10, 10, 411, 71))
self.groupBox.setObjectName("groupBox")
self.lineEdit = QtWidgets.QLineEdit(self.groupBox)
self.lineEdit.setGeometry(QtCore.QRect(10, 30, 391, 20))
self.lineEdit.setObjectName("lineEdit")
self.groupBox_2 = QtWidgets.QGroupBox(Form)
self.groupBox_2.setGeometry(QtCore.QRect(10, 89, 231, 91))
self.groupBox_2.setObjectName("groupBox_2")
self.btnIniItems = QtWidgets.QPushButton(self.groupBox_2)
self.btnIniItems.setGeometry(QtCore.QRect(10, 30, 75, 21))
self.btnIniItems.setObjectName("btnIniItems")
self.pushButton_2 = QtWidgets.QPushButton(self.groupBox_2)
self.pushButton_2.setGeometry(QtCore.QRect(90, 30, 61, 21))
self.pushButton_2.setObjectName("pushButton_2")
self.chkBoxEditable = QtWidgets.QCheckBox(self.groupBox_2)
self.chkBoxEditable.setGeometry(QtCore.QRect(170, 30, 70, 17))
self.chkBoxEditable.setObjectName("chkBoxEditable")
self.comboBox = QtWidgets.QComboBox(self.groupBox_2)
self.comboBox.setGeometry(QtCore.QRect(10, 60, 211, 22))
self.comboBox.setObjectName("comboBox")
self.groupBox_3 = QtWidgets.QGroupBox(Form)
self.groupBox_3.setGeometry(QtCore.QRect(250, 89, 171, 91))
self.groupBox_3.setObjectName("groupBox_3")
self.btnIni2 = QtWidgets.QPushButton(self.groupBox_3)
self.btnIni2.setGeometry(QtCore.QRect(10, 30, 151, 23))
self.btnIni2.setObjectName("btnIni2")
self.comboBox_2 = QtWidgets.QComboBox(self.groupBox_3)
self.comboBox_2.setGeometry(QtCore.QRect(10, 60, 151, 22))
self.comboBox_2.setObjectName("comboBox_2") self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.groupBox.setTitle(_translate("Form", "选择的内容"))
self.groupBox_2.setTitle(_translate("Form", "简单的ComboBox"))
self.btnIniItems.setText(_translate("Form", "初始化列表"))
self.pushButton_2.setText(_translate("Form", "清除列表"))
self.chkBoxEditable.setText(_translate("Form", "可编辑"))
self.groupBox_3.setTitle(_translate("Form", "有用户数据的ComboBox"))
self.btnIni2.setText(_translate("Form", "初始化城市+区号"))

myWidget_ComboBox.py

#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
"""=================================================
@Project -> File : Operate-system -> myWidget_ComboBox.py
@IDE : PyCharm
@Author : zihan
@Date : 2020/4/11 9:48
@Desc :
=================================================""" import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtGui import QIcon from ui_ComboBox import Ui_Form class QmyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent) # 调用父类构造函数,创建窗体
self.ui = Ui_Form() # 创建UI对象
self.ui.setupUi(self) # 构造UI self.ui.btnIni2.clicked.connect(self.on_btn_ini2_clicked)
self.ui.comboBox_2.currentIndexChanged[str].connect(self.combo_box_current_index_change) def on_btnIniItems_clicked(self): # 初始化列表按钮
icon = QIcon("./icons/images/aim.ico")
self.ui.comboBox.clear() # 清除列表
provinces = ["山东", "河北", "河南", "湖北", "湖南", "广东"] # 列表数据
# self.ui.comboBox.addItems(provinces) # 直接添加列表,但无法加图标
for i in range(len(provinces)):
self.ui.comboBox.addItem(icon, provinces[i]) @pyqtSlot(bool) # 可编辑CheckBox
def on_chkBoxEditable_clicked(self, checked):
self.ui.comboBox.setEditable(checked) @pyqtSlot(str) # 简单的ComboBox的当前项变化
def on_comboBox_currentIndexChanged(self, curText):
self.ui.lineEdit.setText(curText) def on_btn_ini2_clicked(self): # 有用户数据的comboBox2的初始化
icon = QIcon("./icons/images/unit.ico")
self.ui.comboBox_2.clear()
cities = {"北京": 10, "上海": 21, "天津": 22, "徐州": 516, "福州": 591, "青岛": 532} # 字典数据
for k in cities:
# print(k)
self.ui.comboBox_2.addItem(icon, k, cities[k]) def combo_box_current_index_change(self, curText):
self.ui.lineEdit.setText(curText)
zone = self.ui.comboBox_2.currentData() # 读取关联数据
if zone is not None:
self.ui.lineEdit.setText(curText + ":区号=%d" % zone) if __name__ == "__main__":
app = QApplication(sys.argv) # 创建app,用QApplication类
form = QmyWidget()
form.show()
sys.exit(app.exec_())

里面的ico图标自己从网上下就可以,我也是随便找的两个图标,哈哈哈。此系列的学习内容均来自《Python Qt GUI与数据化可视化编程》这本书,然后自己爬坑修改。

特别提醒:尽量不要使用自带的那种on_<objectname>_<...>这类内建的函数名,虽然不需要自己手动建立connect,但是有时会有意外的情况发生,比如你单击一次pushButton,你发现clicked函数执行了两次。这是经过了实验得到的结果,所以最稳妥的办法还是自己建立连接,自己命名槽函数,就不会出现意外情况了,关于这种情况也可以参考:https://blog.csdn.net/zhujinghao_09/article/details/8476453

QComboBox常用函数总结

QComboBox存储的项是一个列表,但是QComboBox不提供整个列表用于访问,而可以通过索引访问某个项。访问项的一些函数主要有以下几个。

currentIndex():返回当前项的序号,第一项的序号为0。

currentText():返回当前项的文字。

currentData(role):返回当前项的关联数据,参数role表示数据角色,角色role的默认值为Qt.UserRole。可以为一个项定义多个角色的用户数据,更多自定义角色的编号从Qt.UserRole开始增加,如Qt.UserRole+1、Qt.UserRole+2.

itemText(index):返回索引号为index的项的文字。

itemData(index, role):返回索引号为index的项的角色为role的关联数据,角色role的默认值为Qt.UserRole。

count():返回项的个数。

ok.

1. 设置选中的字体居中,参考链接:https://blog.csdn.net/qq_18286031/article/details/85113931

        m_lineedit = QLineEdit()
m_lineedit.setReadOnly(True)
m_lineedit.setAlignment(Qt.AlignCenter)
self.ui.comboBox.setLineEdit(m_lineedit)

效果:

第十篇 -- 下拉列表框QComboBox的更多相关文章

  1. 解剖SQLSERVER 第十篇 OrcaMDF Studio 发布+ 特性重温(译)

    解剖SQLSERVER 第十篇  OrcaMDF Studio 发布+ 特性重温(译) http://improve.dk/orcamdf-studio-release-feature-recap/ ...

  2. 第十篇 SQL Server代理使用代理帐户

    本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...

  3. 第十篇 Replication:故障排除

    本篇文章是SQL Server Replication系列的第十篇,详细内容请参考原文. 复制故障排除是一项艰巨的任务.在任何复制设置中,都涉及到很多移动部件,而可用的工具并不总是很容易识别问题.Th ...

  4. 第十篇 Integration Services:高级事件行为

    本篇文章是Integration Services系列的第十篇,详细内容请参考原文. 简介在前一篇, we introduced fault tolerance by examining method ...

  5. 第十篇 SQL Server安全行级安全

    本篇文章是SQL Server安全系列的第十篇,详细内容请参考原文. 不像一些其他industrial-strength数据库服务,SQL Server缺乏一个内置保护个别数据记录的机制,称为行级安全 ...

  6. shell基础二十篇 一些笔记

    shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...

  7. [老老实实学WCF] 第十篇 消息通信模式(下) 双工

    老老实实学WCF 第十篇 消息通信模式(下) 双工 在前一篇的学习中,我们了解了单向和请求/应答这两种消息通信模式.我们知道可以通过配置操作协定的IsOneWay属性来改变模式.在这一篇中我们来研究双 ...

  8. Python之路【第二十篇】:待更新中.....

    Python之路[第二十篇]:待更新中.....

  9. Python之路【第十篇】:HTML -暂无等待更新

    Python之路[第十篇]:HTML -暂无等待更新

随机推荐

  1. NX二次开发】Block UI 选择特征

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  2. 【NX二次开发】Block UI 指定方位

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  3. 【VBA】查找字符串

    老婆饼里有老婆吗 Sub test() aaa = "老婆饼里有老婆吗" If InStr(aaa, "老婆") <> 0 Then Debug.p ...

  4. CLR里的MethodTable,MethodDescChunk,MethodDesc,FixUpPreCode都是什么意思

    一:看下面一些概念 1MethodTable MethodTable可以说在CLR里面无处不在,这个东西主要是作为对象的数据类型存在,主要包含了EEClass 模块地址,类型名称,模块路径等. 2.E ...

  5. 听说你还不知道Java代码是怎么运行的?

    作为一名Java程序员,我们需要知道Java代码是怎么运行的.最近复习了深入理解Java虚拟机这本书,做了一下笔记,希望对大家有帮助,如果有不正确的地方,欢迎提出,感激不尽. java 代码运行主要流 ...

  6. K8s 部署 Prometheus + Grafana

    一.简介 1. Prometheus 一款开源的监控&报警&时间序列数据库的组合,起始是由 SoundCloud 公司开发的 基本原理是通过 HTTP 协议周期性抓取被监控组件的状态, ...

  7. js笔记12

    1.元素的属性 div.attributes是所有标签属性构成的数组集合 div.classList是所有class名构成的数组集合 在classList的原型链上可以看到add()和remove() ...

  8. js jquey 笔记

    1.使用insertAfter 如果插入在tr后添加多行数据,数据会倒过来注意组字符串需要倒着循环 1).html方法,给元素添加html代码或者清空html代码(参数为空字符串): 2).appen ...

  9. Collections中的实用方法

    总结一下java.util.Collections类内部的静态方法. checkedCollection(Collection<T> , Class<T> type) chec ...

  10. JavaScript模块化的演变

    自执行函数(IIFE): 作用:马上执行这个函数,自执行函数(IIFE),不易读 (function(x){console.log(x);})(3); 易读版本: (function(x){ retu ...