Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PyQt5-QVariant.value()返回对象而不是python值(pyqt4.toPyObject())_Python_Pyqt4_Pyqt5_Qvariant - Fatal编程技术网

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

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

基于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
输出为:

而不是预期的:

{'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},)