PyQt5 - QVariant.value()返回对象而不是python值(pyqt4 .toPyObject())

时间:2017-12-20 10:32:59

标签: python pyqt4 pyqt5 qvariant

基于the example here和以下输出:

from PyQt4.QtCore import QVariant
data = {'key1': 123, 'key2': 456}
v    = QVariant((data,))
v.toPyObject()[0]
>>> {'key2': 456, 'key1': 123}`

我尝试为pyqt5完成此操作。部分成功。

import sys
from PyQt5 import QtCore
from PyQt5.QtCore import QVariant

data = {'key1': 123, 'key2': 456}
v    = QtCore.QVariant((data,))
v.value()[0]

print v

输出结果为:

  

<PyQt5.QtCore.QVariant object at 0x0000000006778748>

而不是预期的:

  

{'key1': 123, 'key2': 456}{'key2': 456, 'key1': 123}

当QVariant的implementation已更改toPyObject()时,已删除并在pyqt5中收到value()。有关如何获取值而不是对象位置的任何帮助吗?

1 个答案:

答案 0 :(得分:1)

它完美无缺。 v是和QVariant的对象。因此,当您打印v时,它将显示

<PyQt5.QtCore.QVariant object at 0x0000000006778748>

对于每种对象,它都有自己的方法来调用。通过调用特定方法来访问值。

[编辑] 工作

In [1]: import sys
   ...: from PyQt5 import QtCore
   ...: from PyQt5.QtCore import QVariant
   ...: 

In [2]: data = {'key1': 123, 'key2': 456}

In [3]: v = QtCore.QVariant((data,))

In [4]: v.value()
Out[4]: ({'key1': 123, 'key2': 456},)

In [5]: print v
<PyQt5.QtCore.QVariant object at 0x7f6d4e065cf8>

In [6]: print v.value()
({'key2': 456, 'key1': 123},)

您打印的是v而不是v.value()

相关问题