Ключ/значение pyqt QComboBox

Я хочу использовать QComboBox с "ключами" и "значениями" от кортежа, подобного тем используемым в django модели. Например, у меня есть следующая структура для пола человека.

SEX_CHOICES = (('M', 'Male'), ('F', 'Female'))

Первый объект кортежа содержит код пола, который хранится в базе данных и второй текст, который я хочу отобразить в QComboBox как объект.

Есть ли путь, которым я мог установить значение QComboBox как M, и это отображает Штекер. Также, когда пользователь выбирают Штекер элемента, я мог получить выбранное значение как M.

Спасибо

6
задан Danilo 20 April 2010 в 13:07
поделиться

1 ответ

Используйте

cb.addItem  ( text, userData )

и передайте ключ БД как userData . Если вам нужно изменить текущий выбор, используйте cb.itemData () , чтобы получить ключ БД для каждого элемента и сравнить его с тем, который вам нужен.

В качестве альтернативы можно записывать индексы по мере добавления элементов в карту Python и использовать их для непосредственного поиска правильного индекса.

Чтобы упростить использование, оберните QComboBox классом Python, который предлагает сеттеры и геттеры для текущего ключа БД и скрывает отображение.

6
ответ дан 17 December 2019 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: