Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Key/Value pyqt QComboBox

Tags:

pyqt

qcombobox

I want to use a QComboBox with the "keys" and "values" from a tuple similar to the ones used in a django models. For example I have the following structure for a person's sex.

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

The first item of the tuple contains the code of the sex that is stored in the database, and the second one the text that I want to display in the QComboBox as an item.

Is there a way in wich I could set the QComboBox value as M and it displays Male. An also when the user select the element Male I could get the selected value as M.

Thanks

like image 597
Danilo Avatar asked Apr 20 '10 13:04

Danilo


1 Answers

Use

cb.addItem  ( text, userData )

and pass the DB key as userData. If you need to change the current selection, use cb.itemData() to get the DB key of each item and compare it to the one you need.

Alternatively, record the indexes as you add items in a Python map and use this to directly look up the correct index.

To make things more easy to use, wrap the QComboBox with a Python class that offers setters and getters for the current DB key and which hides the mapping.

like image 154
Aaron Digulla Avatar answered Sep 18 '22 03:09

Aaron Digulla