Как сделать некоторые пункты qcombobox временно недоступными для выбора в pyqt5?

Пользователь

от kameron , в категории: Python , 7 месяцев назад

Как сделать некоторые пункты qcombobox временно недоступными для выбора в pyqt5?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jerrold_langworth , 6 месяцев назад

@kameron 

В PyQt5 можно сделать некоторые пункты QComboBox временно недоступными для выбора с помощью метода setItemData() и флага QtCore.Qt.ItemIsEnabled. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from PyQt5 import QtCore, QtGui, QtWidgets

class MyWidget(QtWidgets.QWidget):    
    def __init__(self):
        super().__init__()
        self.layout = QtWidgets.QVBoxLayout(self)
        self.combo_box = QtWidgets.QComboBox(self)
        self.layout.addWidget(self.combo_box)

        # Добавляем пункты в ComboBox
        self.combo_box.addItem("Пункт 1")
        self.combo_box.addItem("Пункт 2")
        self.combo_box.addItem("Пункт 3")

        # Устанавливаем недоступность пункта 2
        self.combo_box.setItemData(1, QtCore.Qt.ItemIsEnabled, QtCore.Qt.ItemFlags)

        self.show()

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MyWidget()
    sys.exit(app.exec_())


В этом примере пункт 2 ComboBox становится временно недоступным для выбора. В данном случае мы используем setItemData() для установки флага ItemIsEnabled для пункта 2.