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



基于此处的SO示例和以下输出:

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 实现的变化,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().

相关内容

  • 没有找到相关文章

最新更新