Clave / valor pyqt QComboBox
Pregunta
Quiero utilizar un QComboBox con las "claves" y "valores" de una tupla similares a las utilizadas en un modelo de Django. Por ejemplo, tengo la siguiente estructura para el sexo de una persona.
SEX_CHOICES = (('M', 'Male'), ('F', 'Female'))
El primer elemento de la tupla contiene el código del sexo que se almacena en la base de datos, y el segundo, el texto que quiero mostrar en el QComboBox como un elemento.
¿Hay alguna manera en wich que pudiera establecer el valor QComboBox como M y muestra masculina. Un también cuando el usuario seleccione el elemento macho que podría conseguir el valor seleccionado como M.
Gracias
Solución
Uso
cb.addItem ( text, userData )
y pasar la clave DB como userData
. Si es necesario cambiar la selección actual, uso cb.itemData()
para conseguir la llave DB de cada elemento y compararlo con el que necesita.
Como alternativa, registrar los índices que se agregan elementos en un mapa Python y usar esto para mirar directamente el índice correcto.
Para hacer las cosas más fáciles de usar, envolver el QComboBox
con una clase Python que ofrece setters y getters para la clave actual DB y que oculta el mapeo.