PyQt5 组合框QComboBox

  • Post category:Python

下面是关于 PyQt5 QComboBox 的详细使用攻略:

QComboBox 简介

QComboBox 是 PyQt5 中用于创建下拉菜单的组合框控件,通过它可以在界面上提供多个选项供用户选择。它用于在固定的选择列表中选择单一的条目或同时选择多个条目。

QComboBox 风格

PyQt5 的 QComboBox 控件有多种风格可供选择,可以根据需要在相应的风格之间切换。

以下是 QComboBox 的几种风格的简介:

  • Qt::ComboBoxStyle:默认风格,下拉菜单在用户点击组合框时显示。

  • Qt::ToolButtonStyle:组合框以工具按钮的形式提供,点击工具按钮后会在屏幕上显示下拉菜单。

  • Qt::FramelessWindowHint:组合框以无边框窗口的形式显示,点击组合框后在屏幕上显示下拉菜单。

QComboBox 属性

QComboBox 中常用的一些属性如下:

  • currentText():获取当前选中项的文本内容。

  • currentIndex():获取当前选中项的索引号。

  • setCurrentText(text):设置当前选中项的文本内容。

  • setCurrentIndex(index):设置当前选中项的索引号。

  • addItem(text):在组合框中添加一项,参数 text 表示要添加的项的文本内容。

  • addItems(text):在组合框中添加多个项,参数 text 是一个字符串列表,表示要添加的多个项的文本内容。

  • removeItem(index):移除指定索引位置的一项。

  • clear():清除组合框中的所有项。

QComboBox 信号

QComboBox 中可以使用的信号有:

  • activated:用户在组合框中选择一项,并关闭下拉列表时触发。

  • currentIndexChanged:用户在组合框中选择一项时触发,无论是否关闭下拉列表。

示例1:简单的下拉菜单

下面是一个简单的例子,用于介绍如何创建一个下拉菜单并添加多个条目:

import sys
from PyQt5.QtWidgets import QApplication, QComboBox, QWidget, QVBoxLayout

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        # 创建 QComboBox 对象
        cb = QComboBox(self)

        # 向组合框中添加多个项
        cb.addItem('First item')
        cb.addItem('Second item')
        cb.addItem('Third item')
        cb.addItem('Fourth item')

        # 将组合框添加到窗口中
        vbox = QVBoxLayout()
        vbox.addWidget(cb)
        self.setLayout(vbox)

        self.setWindowTitle('QComboBox Example')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

运行上述代码将会创建一个窗口,其中包含一个下拉菜单,选项分别为 ‘First item’、’Second item’、’Third item’ 和 ‘Fourth item’。

示例2:QComboBox 的信号

下面是一个例子,用于介绍如何使用 QComboBox 的信号,当用户在下拉菜单中选择一个选项时,程序会在控制台打印出当前选中项的文本内容:

import sys
from PyQt5.QtWidgets import QApplication, QComboBox, QWidget, QVBoxLayout

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        # 创建 QComboBox 对象
        cb = QComboBox(self)

        # 向组合框中添加多个项
        cb.addItem('First item')
        cb.addItem('Second item')
        cb.addItem('Third item')
        cb.addItem('Fourth item')

        # 将组合框添加到窗口中
        vbox = QVBoxLayout()
        vbox.addWidget(cb)
        self.setLayout(vbox)

        # 绑定 activated 信号到相应槽函数中
        cb.activated.connect(self.onActivated)

        self.setWindowTitle('QComboBox Example')
        self.show()

    # 槽函数,用于处理组合框的 activated 信号
    def onActivated(self, text):
        print('Selected item:', text)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

运行上述代码将会创建一个窗口,其中包含一个下拉菜单,选项分别为 ‘First item’、’Second item’、’Third item’ 和 ‘Fourth item’。如果用户在下拉菜单中选择了一个选项,程序将会在控制台打印出当前选中项的文本内容。