PyQt5-下拉列表框QComboBox
QComboBox功能概述
QComboBox是下拉列表框组件,它提供一个下拉列表供用户选择,也可以直接当作一个QLineEdit用于字符串输入。QComboBox除了显示可见下拉列表外,每个项(item,或称列表项)还可以关联一个QVariant类型的用户数据,用于存储一些在列表中不可见的数据。
窗口左侧“简单的ComboBox”分组框里是一个不带用户数据的简单的ComboBox,右侧“有用户数据的ComboBox”分组框里是每个项带有一个用户数据的ComboBox,每个项是一个城市名,关联的数据是城市的区号。
QComboBox主要的功能是提供一个下拉列表供选择输入。在可视化设计窗体时,在界面上放置一个QComboBox组件后,双击此组件会出现如图3-9所示的对话框,可以对QComboBox组件的下拉列表的项进行编辑。在此对话框中可以进行编辑、添加、删除、上移、下移等操作,可以设置项的图标。
窗体UI文件Widget.ui在UI Designer里可视化设计,界面上组件的布局和属性设置见源文件Widget.ui。
下面是我设计的ui界面
下面是myWidget.py文件整体代码:
复制import sys
from PyQt5.QtWidgets import QWidget,QApplication
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtGui import QIcon
from ui_QtApp import Ui_Form
class QmyWidget(QWidget):
def __init__(self,parent=None):
super().__init__(parent) #调用父类构造函数
self.ui=Ui_Form() #创建UI对象
self.ui.setupUi(self) #构造UI
## ====由connectSlotsByName()自动与组件的信号关联的槽函数=====
def on_pushButton_clicked(self): #初始化列表按钮
#设置图标的操作
icon=QIcon(":icon/img1.png")
self.ui.comboBox.clear() #清除列表
provinces=["山东","河北","河南","湖北","湖南","广东"] #列表数据
for i in range(len(provinces)):
self.ui.comboBox.addItem(icon,provinces[i])
def on_pushButton_3_clicked(self): #有用户数据的comboBox2的初始化
#设置图标的操作
icon=QIcon(":icon/img2.png")
self.ui.comboBox_2.clear() #清除列表
cities={"北京":10,"上海":21,"天津":22,"徐州":516,"福州":591,"青岛":532} #字典数据
for k in cities:
self.ui.comboBox_2.addItem(icon,k,cities[k])
def on_pushButton_2_clicked(self): #清除列表按钮
self.ui.comboBox.clear() #清除列表
## =======自定义槽函数=======
@pyqtSlot(bool) ##可编辑CheckBox
def on_checkBox_clicked(self,checked):
self.ui.comboBox.setEditable(checked)
@pyqtSlot(str) ##简单的ComboBox的当前项变换
def on_comboBox_currentIndexChanged(self,curText):
self.ui.lineEdit.setText(curText)
@pyqtSlot(str) ##当前项变化
def on_comboBox_2_currentIndexChanged(self,curText):
self.ui.lineEdit.setText(curText)
zone=self.ui.comboBox_2.currentData() #读取关联数据
if(zone!=None):#必须加此判断,因为有可能是None
self.ui.lineEdit.setText(curText+": 区号=%d"%zone)
if __name__ == "__main__": ##用于当前窗体测试
app=QApplication(sys.argv) #创建GUI应用程序
form=QmyWidget() #创建窗体
form.show()
sys.exit(app.exec_())
应用程序主程序appMain.py文件如下:
复制## GUI应用程序主程序
import sys
from PyQt5.QtWidgets import QApplication
from myWidget import QmyWidget
app = QApplication(sys.argv) # 创建app,用QApplication类
myWidget = QmyWidget() #创建窗体
myWidget.show()
sys.exit(app.exec_())
所以整体效果图如下:
转载请注明出处,欢迎讨论和交流!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具