PyQt5-QVariant.value()返回对象而不是python值(pyqt4.toPyObject())
基于SO示例和以下输出:PyQt5-QVariant.value()返回对象而不是python值(pyqt4.toPyObject()),python,pyqt4,pyqt5,qvariant,Python,Pyqt4,Pyqt5,Qvariant,基于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
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
输出为:
而不是预期的:
{'key1':123,'key2':456}
或{'key2':456,'key1':123}
随着QVariant的更改,
toPyObject()
被删除,并在pyqt5中接收到value()
。有关于如何获取值而不是对象位置的帮助吗?它工作得很好v
是QVariant
的对象。所以当你打印v时,它会显示出来
<PyQt5.QtCore.QVariant object at 0x0000000006778748>
对于每种类型的对象,它都有自己的调用方法。通过调用特定的方法来访问这些值
[编辑]
工作
[1]中的:导入系统
…:从PyQt5导入QtCore
…:从PyQt5.QtCore导入QVariant
...:
在[2]中:数据={'key1':123'key2':456}
在[3]中:v=QtCore.QVariant((数据,))
在[4]:v.value()中
Out[4]:({'key1':123,'key2':456},)
在[5]中:打印v
在[6]中:打印v.值()
({'key2':456,'key1':123},)
你打印的是
v
而不是v.value()
我知道它很管用。。。但我需要的是那个物体的数据,而不是位置。这一切都是关于方法toPython()
,它已经变成了value()
,人类无法阅读。。。我得出了同样的结论。。要更新的刷新页面…>竖起大拇指!在PyQt5中很少需要使用QVariant
。普通Python对象可以直接传递给任何采用QVariant
的Qtapi。空的QVariant
可以被None
替换。我认为这是解决我遇到的类对象问题的一个特殊解决方案,但我在套接字服务器中添加了该方法(这不是一个优雅的解决方案,但现在可以完成这项工作)。所以我又把它拿出来了。我将在本周晚些时候发布该问题,并在此处提供参考。(我链接的或多或少是您的示例,它帮助我尝试了QVarant,乍一看它似乎解决了问题,但现在我正在根据您的程序结构树来解决问题;还没有准备好发布它)。
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},)