PyQt QComboBox в Python — как использовать

Combobox предоставляет вам список опций, чтобы вы могли выбрать одну из них. PyQt Combobox также известен как раскрывающийся список или виджет выбора в Python.

Знакомство с PyQt QComboBox

Для создания выпадающего списка используйте класс QComboBox:

combobox = QCombobBox(self)

После создания выпадающего списка необходимо заполнить его параметрами, используя:

  • addItem() – принимает строковую метку и значение данных и добавляет их в конец списка.
  • insertItem() — работает так же, как метод addItem(), за исключением того, что он принимает индекс в качестве первого аргумента и добавляет элемент с этим индексом в список.

Кроме того, вы можете передать список параметров в метод addItems() или insertItems() одновременно.

Чтобы получить выбранные в данный момент элементы, вы можете воспользоваться одним из следующих методов:

  • currentData() – возвращает текущий выбранный элемент.
  • currentIndex() – возвращает индекс текущего выбранного элемента.
  • currentText() – возвращает текст текущего выбранного элемента.

При желании вы можете ввести текст в выпадающем списке, если установите для его свойства editable значение True.

Свойство insertPolicy позволяет указать, должен ли выпадающий список вставлять введенные элементы в список.

Пример PyQt QComboBox

В следующем примере класс QCombobox используется для создания выпадающего списка:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout, QComboBox
from PyQt6.QtCore import Qt


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('PyQt QComboBox')
        self.setMinimumWidth(300)

        # create a grid layout
        layout = QVBoxLayout()
        self.setLayout(layout)

        cb_label = QLabel('Please select a platform:', self)

        # create a combobox
        self.cb_platform = QComboBox(self)
        self.cb_platform.addItem('Android')
        self.cb_platform.addItem('iOS')
        self.cb_platform.addItem('Windows')

        self.cb_platform.activated.connect(self.update)

        self.result_label = QLabel('', self)

        layout.addWidget(cb_label)
        layout.addWidget(self.cb_platform)
        layout.addWidget(self.result_label)

        # show the window
        self.show()

    def update(self):
        self.result_label.setText(
            f'You selected {self.cb_platform.currentText()}')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())

Выход:

Использование QCombobox для создания выпадающего списка

Как это работает.

  • Сначала создайте виджет выпадающего списка:
self.cb_platform = QComboBox(self)
  • Во-вторых, заполните элементы с помощью метода addItem():
self.cb_platform.addItem('Android')
self.cb_platform.addItem('iOS')
self.cb_platform.addItem('Windows')
  • В-третьих, подключите активированный сигнал к методу self.update():
self.cb_platform.activated.connect(self.update)

Выпадающий список издает сигнал активации при изменении элемента в выпадающем списке.

  • Наконец, определите метод update(), который обновляет текст result_label для выбранного элемента выпадающего списка.
def update(self):
    self.result_label.setText(
        f'You selected {self.cb_platform.currentText()}')

Обратите внимание, что мы используем метод currentText() для получения текста текущего выбранного элемента.

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *