Chiave / valore PyQt QComboBox
Domanda
Voglio usare una QComboBox con le "chiavi" e "valori" da una tupla simile a quelli usati in un modelli di Django. Per esempio io ho la seguente struttura per il sesso di una persona.
SEX_CHOICES = (('M', 'Male'), ('F', 'Female'))
Il primo elemento della tupla contiene il codice del sesso che viene memorizzato nel database, e la seconda il testo che voglio visualizzare nel QComboBox come un elemento.
C'è un modo in wich ho potuto impostare il valore QComboBox come M e visualizza maschile. Un anche quando l'utente seleziona l'elemento maschile ho potuto ottenere il valore selezionato come M.
Grazie
Soluzione
Usa
cb.addItem ( text, userData )
e passare la chiave di DB come userData
. Se è necessario cambiare la selezione corrente, l'uso cb.itemData()
per ottenere la chiave DB di ogni elemento e confrontarlo con quello che vi serve.
In alternativa, registrare gli indici quando si aggiungono gli elementi in una mappa Python e utilizzare questo per guardare direttamente l'indice corretto.
Per rendere le cose più facili da usare, avvolgere il QComboBox
con una classe Python che offre setter e getter per la chiave DB attuale e che nasconde la mappatura.