PyQt5 – QComboBox小工具

  • Post category:Python

PyQt5是一个流行的Python GUI框架,它可以帮助我们快速高效地构建桌面应用程序,其中QComboBox小工具则是一个常用的下拉选择框。

QComboBox基本用法

首先,我们需要导入PyQt5库和QComboBox模块,并创建一个QComboBox实例。

from PyQt5.QtWidgets import QMainWindow, QApplication, QComboBox

combo_box = QComboBox()

接下来,我们可以添加一些选项到下拉框中,针对每个选项我们可以添加一个标签和一个值。

combo_box.addItem('Option 1', 'value1')
combo_box.addItem('Option 2', 'value2')
combo_box.addItem('Option 3', 'value3')

同时,我们还可以通过setCurrentIndex方法来设置默认选中项的索引。

combo_box.setCurrentIndex(0) # 默认选中第一项

当然,当用户选择某个选项时我们可以通过currentIndexChanged信号来获取选择的值并进行处理。

combo_box.currentIndexChanged.connect(lambda index: print(combo_box.currentData()))

QComboBox进阶用法

除了基本用法之外,QComboBox还有一些其他的高级用法,例如自定义选项、设置下拉框大小等等。以下是一些实际的代码示例。

自定义选项

我们可以通过addItem方法来添加自定义选项,同时通过setItemData方法来为每个选项添加特殊的数据。

combo_box.addItem('Option 4')
combo_box.setItemData(3, {'value': 'value4'})

设置下拉框大小

我们可以使用setFixedSize方法来设置下拉框的尺寸。

combo_box.setFixedSize(120, 30)

示例代码

下面是一个完整的示例代码,演示了如何使用PyQt5中的QComboBox小工具。

from PyQt5.QtWidgets import QMainWindow, QApplication, QComboBox

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        combo_box = QComboBox(self)
        combo_box.addItem('Option 1', 'value1')
        combo_box.addItem('Option 2', 'value2')
        combo_box.addItem('Option 3', 'value3')
        combo_box.addItem('Option 4')
        combo_box.setItemData(3, {'value': 'value4'})

        combo_box.setCurrentIndex(0)
        combo_box.currentIndexChanged.connect(
            lambda index: print(combo_box.currentData()))

        combo_box.setFixedSize(120, 30)

        self.setCentralWidget(combo_box)
        self.setWindowTitle('QComboBox Demo')

if __name__ == '__main__':
    app = QApplication([])
    main_window = MainWindow()
    main_window.show()
    app.exec_()

在这个示例中,我们创建了一个MainWindow类,该类继承了QMainWindow类,用来创建一个基于主窗口的应用程序。在初始化过程中,我们创建了一个QComboBox小工具实例,并且为它添加了一些选项。同时,我们还设置了默认选中项和尺寸大小,并通过currentIndexChanged信号来监听用户选择的内容。最终,我们把QComboBox添加为主窗口的中央控件,并展示了整个应用程序。