Вставка скрытых данных в поле со списком pyqt

Я не уверен, можно ли это сделать или есть ли лучший способ сделать это. Тем не менее, у меня есть база данных, из которой я могу вставлять множество элементов в поле со списком, однако для поиска и удаления этих конкретных данных мне нужно иметь возможность размещать идентификатор каждой строки в поле со списком. Однако я не совсем уверен, как это сделать с PyQT.

Если бы кто-нибудь мог мне помочь, я был бы признателен. Если бы эти идентификаторы были там, это определенно облегчило бы мне жизнь, но я не могу их показать, потому что обычный пользователь никогда их не поймет.


person Argus    schedule 12.09.2015    source источник


Ответы (1)


Стандартный API для добавления элементов уже делает именно то, что вам нужно:

# add some items with associated data
for identifier in (123, 456, 789):
    combo.addItem('text', identifier)

С каждым элементом можно связать более одной части данных, используя разные роли для каждого из них (роль по умолчанию — QtCore.Qt.UserRole):

combo.setItemData(index, 'other data', QtCore.Qt.UserRole + 1)

Затем вы можете найти элементы по данным/ролям:

index = combo.findData(456)
if index >= 0:
    print(combo.itemData(index, QtCore.Qt.UserRole + 1)) # prints "other data"
person ekhumoro    schedule 12.09.2015