Элемент во всплывающем списке можно скрыть следующим образом:
self.combo.view().setRowHidden(0, True)
Однако это все же позволяет выбирать скрытый элемент с помощью клавиатуры или колесика мыши. Чтобы предотвратить это, скрытый элемент можно отключить в слоте, подключенном к сигналу activated
. Это означает, что после правильного выбора сообщение больше не отображается. Чтобы вернуть его (например, при сбросе формы), элемент можно просто повторно включить.
Вот базовая демонстрация, которая реализует все это:
import sys
from PyQt5 import QtCore, QtWidgets
class Window(QtWidgets.QWidget):
def __init__(self):
super(Window, self).__init__()
self.button = QtWidgets.QPushButton('Reset')
self.button.clicked.connect(self.handleReset)
self.combo = QtWidgets.QComboBox()
layout = QtWidgets.QHBoxLayout(self)
layout.addWidget(self.combo)
layout.addWidget(self.button)
products = ['Select product', '223', '51443' , '7335']
self.combo.addItems(products)
self.combo.view().setRowHidden(0, True)
self.combo.activated.connect(self.showComboMessage)
def showComboMessage(self, index=-1, enable=False):
if index:
self.combo.model().item(0).setEnabled(enable)
def handleReset(self):
self.showComboMessage(enable=True)
self.combo.setCurrentIndex(0)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Window()
window.setWindowTitle('Combo Demo')
window.setGeometry(600, 100, 100, 75)
window.show()
sys.exit(app.exec_())