Pyqt5 combobox


起因

  1. combobox的使用和介紹
  2. 兩個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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM