效果图:

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. Kubernetes 实战——配置应用(ConfigMap、Secret)

    配置容器化应用的方式:①命令行参数:②环境变量:③文件化配置 一.向容器传递命令行参数或环境变量 这两种方式在 Pod 创建后不可被修改 1. 在Docker中定义命令与参数 ENTRYPOINT:容 ...

  2. 【NX二次开发】开发环境搭建

    1.Visual Studio 版本按照下表选择. UG版本 VS版本 NX1847-NX1872版 Visual Studio 2017 Build 19.10.25017 NX12版 Visual ...

  3. 面试总被问到HTTP缓存机制及原理?看完你就彻底明白了

    前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能. 但是对于很多前端 ...

  4. 使用 flux2+kustomize+helm+github 进行多集群 GitOps 云原生渐进式交付

    对于此示例,我们假设有两个集群的场景:暂存(staging)和生产(production). 最终目标是利用 Flux 和 Kustomize 来管理两个集群,同时最大限度地减少重复声明. 我们将配置 ...

  5. 『无为则无心』Python基础 — 12、Python运算符详细介绍

    目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...

  6. BGP路由技术

    BGP路由技术 目录 一.BGP概述 1.1.自治系统 1.2.动态路由分类 1.3.BGP概念 1.4.BGP的特征 1.5.BGP工作原理 二.命令配置 2.1.BGP配置思路 2.2.命令 一. ...

  7. vue cli3 创建项目

    1.确认是否由安装由vue 命令提示符 执行 vue -V 如果没有则执行 npm uninstall vue-cli 2.创建项目 vue create demo1 具体操作如下: (1)执行以上命 ...

  8. Redis 底层数据结构之跳跃表

    文章参考 <Redis 设计与实现>黄建宏 Redis(2) 跳跃表 跳跃表 跳跃表 skiplist 是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节 ...

  9. Java程序设计(2021春)——第一章续笔记与思考

    Java程序设计(2021春)--第一章续笔记与思考 目录 Java程序设计(2021春)--第一章续笔记与思考 Java数据类型 基本数据类型 引用类型 基本数据类型--整数类型的细节 基本数据类型 ...

  10. RabbitMq脑裂问题

    现象 部署在阿里云上的2台RabbitMQ主从,访问management页面时出现如下所示的内容: 查看其中一个mq的日志,发现如下内容: 00:06:32.423 [warning] <0.5 ...