Ключ / Значение pyqt QComboBox - PullRequest
       7

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

5 голосов
/ 20 апреля 2010

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

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

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

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

Спасибо

1 Ответ

6 голосов
/ 20 апреля 2010

Используйте

cb.addItem  ( text, userData )

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

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

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

...