欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入我们的社群。

PyQt5系列教程(三十四)QComboBox基本使用

PyQt5开发 迷途小书童 2年前 (2022-10-20) 1950次浏览 0个评论

软硬件环境

  • Windows 10 64bit
  • Anaconda3 with python 3.8
  • PyQt5 5.15

简介

QComboBox 是下拉列表控件,提供多个选项,让用户选择,在实际应用中很常见。

QCombobox 常用的方法如下

方法 功能
addItem() 增加一个下拉选项
addItems() 增加多个下拉选项,参数使用列表
clear() 删除所有下拉选项
count() 返回下拉选项数目
currentText() 返回选中选项的文本
itemText(i) 返回索引值为i的选项的文本
currentIndex() 返回选中选项的索引值
itemText(i) 返回索引值为i的选项的文本
setItemText(index,text) 修改索引值为index的文本

QComboBox 的常用信号

信号 功能
Activated 选中一个下拉选项时发射该信号
currentIndexChanged 当下拉选项的索引发生改变时发射该信号
highlighted 选中下拉选项时,发射该信号

实操

界面设计,我们还是利用 designer 来做,拖动一个 labelcombo box 控件到主窗口,调整下位置、大小、字体大小等

下面是核心代码,也都比较好理解,参考代码间的注释

import sys

from PyQt5.QtWidgets import QMainWindow, QApplication

from ui import Ui_MainWindow

class MainWindow(QMainWindow, Ui_MainWindow):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        # 增加单个选项
        self.comboBox.addItem("Python")
        self.comboBox.addItem("Java")

        # 增加多个选项
        self.comboBox.addItems(["C", "C++", "Javascript"])

        # 绑定信号和槽
        # 当下拉选项的index发生变化,才发射这个信号,比如连续选中同一个选项,这个信号就不会发射
        self.comboBox.currentIndexChanged.connect(self.on_item_selected)

        # 和currentIndexChanged不同的是,即使前后选择的是同一个选项,信号也会被发射
        self.comboBox.activated.connect(self.on_activated)

        # 当焦点在下拉选项上时,信号被发射
        self.comboBox.highlighted.connect(self.on_highlighted)

    def on_item_selected(self):
        print("{}: {}, index={}, total count={}".format(self.label.text(), self.comboBox.currentText(), self.comboBox.currentIndex(), self.comboBox.count()))

    def on_activated(self):
        print('on_activated.')

    def on_highlighted(self):
        print('on_highlighted.')

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

最后的执行效果如下

PyQt5 QComboBox

源码下载

https://github.com/xugaoxiang/learningPyQt5

PyQt5系列教程

更多 PyQt5 教程,请移步

https://xugaoxiang.com/category/python/pyqt5/

喜欢 (0)

您必须 登录 才能发表评论!