起因
- 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
