关键字/值 pyqt QComboBox

7

我想使用一个QComboBox,其中的“键”和“值”与Django模型中使用的类似。例如,我有一个人性别的以下结构。

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

元组的第一项包含存储在数据库中的性别代码,第二项是我想在QComboBox中显示为项目的文本。

有没有一种方法可以将QComboBox值设置为M并显示为Male。当用户选择Male元素时,我也可以获取所选值作为M。

谢谢

1个回答

6

使用

cb.addItem  ( text, userData )

并将DB密钥作为userData传递。如果您需要更改当前选择,请使用cb.itemData()获取每个项的DB密钥并将其与您需要的密钥进行比较。

或者,记录您添加项目时的索引到Python映射中,并使用它直接查找正确的索引。

为了使使用更加方便,可以用Python类包装QComboBox,为当前DB密钥提供设置器和获取器,并隐藏映射关系。


谢谢,我认为实现起来会很容易。我唯一的问题是如何在Qt Designer中使用自定义QComboBox。有没有简单的方法添加新控件?你觉得使用qt模型会更容易吗?我已经检查过了,它可以保存你提到的映射关系。但仍然无法将值从数据库值设置。 - Danilo
请参阅文档以了解如何在PyQt中构建小部件,这些小部件可以在设计器中使用: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/pyqt4ref.html#using-python-widgets-in-qt-designer - Aaron Digulla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接