我按照这个例子键/值 pyqt QComboBox,使用下面的代码将 ID 值存储到组合框项。
self.combox_widget.addItem('Apples', 'Green')
indx = self.combox_widget.currentIndex()
print self.combox_widget.itemData(indx)
然而,我得到<PyQt4.QtCore.QVariant object at 0x02AC1A70>
尝试检索数据值(上例中的“绿色”)。我在这里缺少什么?
大多数设置和检索任意“数据”的 Qt API 会将其存储为 QVariant。
For Python2,默认情况下,PyQt会自动转换一个python对象to当您设置它时,它不会自动将它们转换回来retrieve它。所以你必须采取额外的步骤来做到这一点,如下所示:
print self.combox_widget.itemData(indx).toPyObject()
For Python3,默认情况下,转换始终在两个方向上自动完成,因此不需要额外的步骤。
为了解决这个差异,PyQt 提供了一个显式设置默认模式的方法通过使用sip
module:
import sip
sip.setapi('QVariant', 2)
from PyQt4 import QtCore, QtGui
这需要在程序开始时完成一次,before导入其他 PyQt 模块,并将确保任何 Qt API 都不会返回 QVariant。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)