返回

PyQt5基本窗口控件(六)QCombox

发布时间:2023-01-09 22:32:27 262
# python

(PyQt5基本窗口控件(六)QCombox)

  • QComboBox是一个集按钮和下拉选项于一体的控件,也叫下拉列表框。
  • QComboBox类中的常用方法
方法 描述
addItem() 添加一个下拉选项
addItems() 从列表中添加下拉选项
Clear() 删除下列选项集合中的所有选项
count() 返回下拉选项集合中的总数量
itemText(i) 返回选中选项的文本
currentIndex() 返回选中项的索引
setItemText(in index,text) 改变序号为index项的文本
  • QComboBox类中的常用信号
信号 含义
Activated 当用户选中一个下拉选项时发射该信号
currentIndexChanged 当下列选项的索引发生改变时发射该信号
highlighted 当选中一个已经选中的下列选项时,发射该信号

案例十七 QComboBox按钮的使用

# -*- coding:utf-8 -*-
"""
    # @Time:2022/12/9 0009 8:11
    # @Author:晚秋拾叶
    # @File:qt04_QComboBox.py
    # @PyCharm之Python
"""
import sys

from PyQt5.QtWidgets import *


class ComboxDemo(QWidget):
    def __init__(self, parent=None):
        super(ComboxDemo, self).__init__(parent)
        self.setWindowTitle("ComBox例子")
        self.resize(500, 90)

        VBlayout = QVBoxLayout()
        self.lb1 = QLabel("")

        self.cb = QComboBox()
        self.cb.addItem("C")
        self.cb.addItem("C++")
        self.cb.addItems(["Java", "C#", "Python"])
        self.cb.currentIndexChanged.connect(self.selectionchange)
        VBlayout.addWidget(self.cb)
        VBlayout.addWidget(self.lb1)

        self.setLayout(VBlayout)

    def selectionchange(self, i):
        self.lb1.setText(self.cb.currentText())
        print("Item in the list are:")
        for count in range(self.cb.count()):
            print("Item" + str(count) + "=" + self.cb.itemText(count))
            # 此处比原书多了if语句,更清晰展示后台的结果
            if count == i:
                print("Current index", i, "selection changed", self.cb.currentText())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = ComboxDemo()
    win.show()
    sys.exit(app.exec_())

  • 代码分析
  • 这个例子显示了一个下拉列表框和一个标签,其中下拉列表有5个选项有5个选项,这里使用addItem()方法添加一个或多个选项。
        self.cb = QComboBox()
        self.cb.addItem("C")
        self.cb.addItem("C++")
        self.cb.addItems(["Java", "C#", "Python"])
  • 当下拉列表框选项改变时,发射currentIndexChanged信号,连接到自定义槽函数selectiongchange()
self.cb.currentIndexChanged.connect(self.selectionchange)
  • 在选中一个选项时,把该选项文本设置为标签的文本,并调整标签的大小
def selectionchange(self, i):
    self.lb1.setText(self.cb.currentText())
  • 此处,原作代码有所改动,让后台打印清晰
    def selectionchange(self, i):
        self.lb1.setText(self.cb.currentText())
        print("Item in the list are:")
        for count in range(self.cb.count()):
            print("Item" + str(count) + "=" + self.cb.itemText(count))
            if count == i:
                print("Current index", i, "selection changed", self.cb.currentText())
  • 效果如图 
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线