Pyqt5 combobox
起因
- combobox的使用和介绍
- 两个
combobox
联动
开始
介绍
Combobox是Qt中的下拉复选框,
注意:在添加列表选项时,可以一个个添加,也可以直接使用列表一次性添加多个;
添加多个后 会默认显示索引为0的元素。
常用方法
- 控件常用函数:
函数 | 意义 |
---|---|
.addItem(string) | #添加字符串项到Item |
.addItems(list) | #添加列表或元组元素到Item |
.clear() | #清除所有Item |
.clearEditText() | #清除编辑框内容 |
.count() | #返回Item数目 |
.currentIndex() | #返回当前选择索引,从0开始 |
.currentText() | #返回当前选择内容 |
.insertItem(index,string) | #插入字符串项到Item项index后 |
.insertItems(index,list) | #插入列表或元组元素到Item项index后 |
.insertSeparator(index) | #插入分隔符到Item项index后 |
.itemText(index) | #返回Item项index的内容 |
.removeItem(index) | #删除Item项index |
.setCurrentIndex(index) | #设置Item项index为当前选择 |
.setEditable(True) | #设置选框可编辑 |
.setEditText(string) | #设置编辑框内容 |
.setItemText(index,string) | #设置Item项index内容为字符串值 |
- 信号:
案例
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class QComboBoxDemo(QWidget):
def __init__(self):
super(QComboBoxDemo, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('下拉列表控件演示')
self.resize(300, 100)
layout = QVBoxLayout() # 设置垂直布局
self.label = QLabel('选择种类') # label 1
self.label1 = QLabel("选择需求") # label 2
self.cb = QComboBox() # 创建下拉列表对象1
self.cb1 = QComboBox() # 创建下拉列表对象2
self.cb.addItem('坚果') # 添加单个控件
self.cb.addItem('小球')
self.cb.addItems(['螺母', '未知']) # 一次添加多个控件
# 当下拉复选框内容被选中时 发送信号
self.cb.currentIndexChanged.connect(self.selectionChange) # 获取当前选中元素的索引 并按照指定格式输出
self.cb.activated[str].connect(self.change) # 获取当前选中元素的索引
# 把label和combobox 添加进 垂直布局
layout.addWidget(self.label)
layout.addWidget(self.cb)
layout.addWidget(self.label1)
layout.addWidget(self.cb1)
self.setLayout(layout)
def selectionChange(self, i): # 默认传递两个参数 第二个当前选择的索引
self.label.setText(self.cb.currentText()) # currentText 返回当前下拉复选框选择的内容
self.label.adjustSize()
for count in range(self.cb.count()): # 获取所有的元素
print('item' + str(count) + '=' + self.cb.itemText(count))
print('current index', i, 'selection changed', self.cb.currentText())
def change(self, s):
self.cb1.clear()
if s == "坚果":
self.cb1.addItem('夏威夷果') # 添加单个控件
elif s == "小球":
self.cb1.addItem('红球')
self.cb1.addItems(['绿球', '蓝球']) # 一次添加多个控件
elif s == "螺母":
self.cb1.addItem("M12")
else:
self.cb1.addItem("请重选")
if __name__ == '__main__':
app = QApplication(sys.argv)
main = QComboBoxDemo()
main.show()
sys.exit(app.exec_())
参考:
https://baijiahao.baidu.com/s?id=1663472192312252851&wfr=spider&for=pc