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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top