Loading

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

posted @ 2021-01-05 15:22  Unixcs  阅读(5131)  评论(0编辑  收藏  举报