На этом шаге мы методы, используемые для выполнения указанных операций.
Для добавления, изменения, удаления и получения значения элементов предназначены следующие методы из класса QComboBox:
addItem(<Строка>[, <Данные>]) addItem(<QIcon>, <Строка>[, <Данные>])
В параметре <Строка> задается текст элемента списка, а в параметре <QIcon> - значок, который будет отображен перед текстом. Необязательный параметр <Данные> позволяет сохранить пользовательские данные - например, индекс в таблице базы данных;
insertItem(<Индекс>, <Строка>[, <Данные>]) insertItem(<Индекс>, <QIcon>, <Строка>[, <Данные>])
В заключение приведем небольшой пример, иллюстрирующий использование некоторых из перечисленных методов.
Рис.1. Результат работы приложения
Текст приложения:
# -*- coding: utf-8 -*- from PyQt5 import QtWidgets import sys # Обработчик нажатия первой кнопки def on_clicked1(): cbox.addItem(ledit.text()) ledit.clear() # Очистка строки # Обработчик нажатия второй кнопки def on_clicked2(): n = cbox.currentIndex() # Номер текущего элемента cbox.removeItem(n) # Удалить элемент с указанным номером app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget() window.setWindowTitle("Пример использования QComboBox") # Создание компонентов cbox = QtWidgets.QComboBox() ledit = QtWidgets.QLineEdit() label1 = QtWidgets.QLabel("Список") label2 = QtWidgets.QLabel("Строка для ввода") # Создание кнопок и назначение обработчиков button1 = QtWidgets.QPushButton("Добавить в список") button1.clicked.connect(on_clicked1) button2 = QtWidgets.QPushButton("Удалить текущий элемент") button2.clicked.connect(on_clicked2) # Помещение компонентов в контейнеры vbox1 = QtWidgets.QVBoxLayout() vbox1.addWidget(label1) vbox1.addWidget(cbox) vbox2 = QtWidgets.QVBoxLayout() vbox2.addWidget(label2) vbox2.addWidget(ledit) # Размещение компонентов и контейнеров по сетке grid = QtWidgets.QGridLayout() grid.addLayout(vbox1, 0, 0) grid.addWidget(button1, 0, 1) grid.addLayout(vbox2, 1, 0) grid.addWidget(button2, 1, 1) # Добавление сетки в окно и показ окна window.setLayout(grid) window.resize(300,150) window.show() sys.exit(app.exec_())
На следующем шаге мы рассмотрим изменение параметров списка.