我想使用一个QComboBox,其中的“键”和“值”与Django模型中使用的类似。例如,我有一个人性别的以下结构。
SEX_CHOICES = (('M', 'Male'), ('F', 'Female'))
元组的第一项包含存储在数据库中的性别代码,第二项是我想在QComboBox中显示为项目的文本。
有没有一种方法可以将QComboBox值设置为M并显示为Male。当用户选择Male元素时,我也可以获取所选值作为M。
谢谢
使用
cb.addItem ( text, userData )
并将DB密钥作为userData
传递。如果您需要更改当前选择,请使用cb.itemData()
获取每个项的DB密钥并将其与您需要的密钥进行比较。
或者,记录您添加项目时的索引到Python映射中,并使用它直接查找正确的索引。
为了使使用更加方便,可以用Python类包装QComboBox
,为当前DB密钥提供设置器和获取器,并隐藏映射关系。