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())
Выход:
Как это работает.
- Сначала создайте виджет выпадающего списка:
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() для получения текста текущего выбранного элемента.