PyQt5 - QVariant.value() returns 对象而不是 python 值 (pyqt4 .toPyObject())
PyQt5 - QVariant.value() returns object instead of python value (pyqt4 .toPyObject())
基于 SO 示例 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}
or {'key2': 456, 'key1': 123}
随着 QVariant 的 implementation 改变 toPyObject()
被删除并在 pyqt5 中接收 value()
而不是。关于如何获取值而不是对象位置的任何帮助?
效果很好。 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()
。
基于 SO 示例 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}
or{'key2': 456, 'key1': 123}
随着 QVariant 的 implementation 改变 toPyObject()
被删除并在 pyqt5 中接收 value()
而不是。关于如何获取值而不是对象位置的任何帮助?
效果很好。 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()
。