如何从 QVariant 获取 Python 列表
How to get Python List from QVariant
如果Qt.UserRole
模型的headerData()
returns一个Python列表变量:
if role==Qt.UserRole:
return QVariant(['one','two','three'])
而不是常规的 Python 列出调用的函数:
returnedValue = myModel(index.column(), Qt.Horizontal, Qt.UserRole)
得到一个QVariant
对象:
<PyQt4.QtCore.QVariant object at 0x10d3b67c0>
尝试使用以下方法将返回的 QVariant
对象转换为 Python:
pythonList=returnedValue.toPyObject()
没用。我尝试过:
对于 returnedValue.toList() 中的每个:
打印每个
但这仍然会打印出一些 QVariants。应该使用什么方法将 QVariant 转换为 Python 列表?
QVariant 是几乎所有内置类型的通用容器,所以为了将 QVariant 数据转换回来,你需要知道它存储的是什么类型的数据。
from PyQt4.QtCore import QVariant
a = QVariant(['one', 'two', 'three'])
aList = [unicode(i.toString()) for i in a.toList()]
print aList
输出为:
[u'one', u'two', u'three']
如果Qt.UserRole
模型的headerData()
returns一个Python列表变量:
if role==Qt.UserRole:
return QVariant(['one','two','three'])
而不是常规的 Python 列出调用的函数:
returnedValue = myModel(index.column(), Qt.Horizontal, Qt.UserRole)
得到一个QVariant
对象:
<PyQt4.QtCore.QVariant object at 0x10d3b67c0>
尝试使用以下方法将返回的 QVariant
对象转换为 Python:
pythonList=returnedValue.toPyObject()
没用。我尝试过:
对于 returnedValue.toList() 中的每个: 打印每个
但这仍然会打印出一些 QVariants。应该使用什么方法将 QVariant 转换为 Python 列表?
QVariant 是几乎所有内置类型的通用容器,所以为了将 QVariant 数据转换回来,你需要知道它存储的是什么类型的数据。
from PyQt4.QtCore import QVariant
a = QVariant(['one', 'two', 'three'])
aList = [unicode(i.toString()) for i in a.toList()]
print aList
输出为:
[u'one', u'two', u'three']