Sta*_*ked 3 python pyqt pyqt4 python-2.7
我按照这个示例键/值pyqt QComboBox,使用下面的代码将ID值存储到组合框项目.
self.combox_widget.addItem('Apples', 'Green')
indx = self.combox_widget.currentIndex()
print self.combox_widget.itemData(indx)
Run Code Online (Sandbox Code Playgroud)
但是,我开始<PyQt4.QtCore.QVariant object at 0x02AC1A70>
尝试检索DATA值(上例中的'Green').我在这里错过了什么?
ekh*_*oro 10
大多数设置和检索任意"数据"的Qt API都会将其存储为QVariant.
对于Python2,默认情况下,PyQt会在你设置它时自动将python对象转换为QVariant,但是当你检索它时它不会自动将它们转换回来.所以你必须采取额外的步骤来做到这一点:
print self.combox_widget.itemData(indx).toPyObject()
Run Code Online (Sandbox Code Playgroud)
对于Python3,默认情况下,转换始终在两个方向自动完成,因此不需要额外的步骤.
为了解决这个差异,PyQt提供了一种通过使用sip
模块显式设置默认模式的方法:
import sip
sip.setapi('QVariant', 2)
from PyQt4 import QtCore, QtGui
Run Code Online (Sandbox Code Playgroud)
这需要在程序开始时,在导入其他PyQt模块之前完成一次,并确保任何Qt API都不会返回QVariant.
归档时间: |
|
查看次数: |
4152 次 |
最近记录: |