组合框-下拉选择框QCombox
继承于 QWidget
下拉列表框样式如图:
import sys from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QComboBox,QCompleter from PyQt5.QtGui import QIcon,QValidator from PyQt5.QtCore import QSize class Demo(QWidget): def __init__(self): super().__init__() self.resize(300,300) def A(): s=cb.count() #获取项目总数--包括分割线 s = cb.currentIndex() # 获取当前项目的索引 s = cb.currentText() # 取当前项目的文本 s = cb.currentData() # 获取当前项目的用户附加的数据 s=cb.itemIcon(2) #获取指定索引项目的图标对象 s=cb.itemData(3) #获取指定索引项目的用户附加的数据 s=cb.itemText(3) #获取指定索引项目的文本 print(s) def B(): #cb.setMaxCount(4) # 设置最大存储项目总数 #达到指定项目总数后,不能再添加 #maxCount() 返回最大可存储项目总数 #cb.setMaxVisibleItems(3) #设置可见的项目总数 #maxVisibleItems() 返回可见的项目总数 #cb.clear() #清空所有项目 #cb.clearEditText() #只是清空当前编辑框中的文本--不改变项目数 #cb.showPopup() #弹出下拉框 pass btn=QPushButton('获取数据',self) btn.move(80,250) btn.clicked.connect(A) btn1 = QPushButton('按钮1', self) btn1.move(160, 250) btn1.clicked.connect(B) cb=QComboBox(self) #构造出一个空白的下拉列表控件 cb.move(100,20) cb.addItem('天津','a') #添加一个项目 #参数1 项目-必须是文本 #参数2 用户附加数据-任何类型 cb.addItem(QIcon(r'大象1.png'),'北京','b') #添加一个项目--带图标 cb.addItems(['上海','浙江']) #添加项目序列 #参数 可迭代的数据 cb.insertItem(1,'重庆','c') #插入一个项目 #参数1 索引号 cb.insertItem(1, QIcon(r'大象1.png'),'西安','d') # 插入一个项目--带图标 cb.insertItems(1,['辽宁','黑龙江']) #插入项目序列 #参数2 可迭代的数据 cb.setItemIcon(2,QIcon(r'大象1.png')) #给指定索引项目设置图标 cb.setItemText(7,'蒙古') #给指定索引项目设置文本---原有文本被覆盖 #cb.removeItem(7) #删除指定索引的项目 cb.insertSeparator(4) #插入分割线---分割线做为指定索引项目 cb.setCurrentIndex(2) #指定索引项目为当前项目--默认是第0项目 cb.setCurrentText('西安') #根据文本指定当前项目 #如果参数所指的项目不存在的话就无效 cb.setEditable(True) #编辑框能否被编辑 #在编辑框中编辑文本回车之后,会追加到项目尾部 #isEditable() 返回能否被编辑 #cb.setEditText('广东') #设置编辑框中的文本 #只有setEditable设为True,setEditText才有效 #按了回车键 会追加到项目尾部 cb.setDuplicatesEnabled(True) #是否可重复 #设置为True时,编辑框按回车时追加的项目可以重复 #duplicatesEnabled() 返回是否可重复 cb.setFrame(True) #是否有框架--是否有外框 #setEditable 设置为True时 setFrame才有效果 #hasFrame() 返回是否有框架 cb.setIconSize(QSize(40,40)) #设置图标尺寸 #iconSize() 返回图标尺寸 cb.setSizeAdjustPolicy(QComboBox.AdjustToContents) #尺寸调整策略 #QComboBox.AdjustToContents 组合框将始终根据最长内容进行调整 #QComboBox.AdjustToContentsOnFirstShow 组合框将在第一次显示时调整其内容。 #QComboBox.AdjustToMinimumContentsLengthWithIcon 组合框将调整为minimumContentsLength加上图标的空间。出于性能原因,请在大型模型上使用此策略。 cl = QCompleter(['1abc', 'gfds', 'yur', 'aew']) #参数 可迭代的 cb.setCompleter(cl) # 设置完成器--自动补全 #cb.setValidator() #设置验证器 #参照:单行输入文本框 #信号: #cb.activated.connect(self.AA) #某个条目被选中时,必须是用户交互, 造成的值改变才会发射这个信号 #会向槽函数传递一个int值--被选中项目的索引号 #cb.activated[str].connect(self.BB) # 某个条目被选中时,必须是用户交互, 造成的值改变才会发射这个信号 # 会向槽函数传递一个字符串--被选中项目的文本 #cb.currentIndexChanged.connect(self.CC) #当前选中的索引发生改变时-用户交互,代码控制 # 会向槽函数传递一个int值--被选中项目的索引号 #cb.currentIndexChanged[str].connect(self.DD) # 当前选中的索引发生改变时-用户交互,代码控制 # 会向槽函数传递一个字符串--被选中项目的文本 #cb.currentTextChanged.connect(self.EE) #当前的文本内容发生改变时 # 会向槽函数传递一个字符串--文本框中的文本 #cb.editTextChanged.connect(self.FF) #编辑的文本发生改变时 #setEditable设置为True时,文本框中的文本发生改变时 #cb.highlighted.connect(self.GG) #高亮发生改变时--在下拉列表框中鼠标所选的项目发生变化时 # 会向槽函数传递一个int值--高亮项目的索引号 cb.highlighted[str].connect(self.HH) #高亮发生改变时--在下拉列表框中鼠标所选的项目发生变化时 # 会向槽函数传递一个字符串--高亮项目的文本 def HH(self,x): print('高亮改变了',x) def GG(self,x): print('高亮改变了',x) def AA(self,x): print('你的选择改变了',x) def BB(self,x): print('你的选择改变了',x) def CC(self,x): print('你的选择改变了',x) def DD(self,x): print('你的选择改变了',x) def EE(self,x): print('文本改变了',x) def FF(self,x): print('编辑文本改变了',x) if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
天子骄龙
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步