Я хочу использовать QComboBox с "ключами" и "значениями" от кортежа, подобного тем используемым в django модели. Например, у меня есть следующая структура для пола человека.
SEX_CHOICES = (('M', 'Male'), ('F', 'Female'))
Первый объект кортежа содержит код пола, который хранится в базе данных и второй текст, который я хочу отобразить в QComboBox как объект.
Есть ли путь, которым я мог установить значение QComboBox как M, и это отображает Штекер. Также, когда пользователь выбирают Штекер элемента, я мог получить выбранное значение как M.
Спасибо
Используйте
cb.addItem ( text, userData )
и передайте ключ БД как userData
. Если вам нужно изменить текущий выбор, используйте cb.itemData ()
, чтобы получить ключ БД для каждого элемента и сравнить его с тем, который вам нужен.
В качестве альтернативы можно записывать индексы по мере добавления элементов в карту Python и использовать их для непосредственного поиска правильного индекса.
Чтобы упростить использование, оберните QComboBox
классом Python, который предлагает сеттеры и геттеры для текущего ключа БД и скрывает отображение.