【发布时间】:2017-12-20 10:32:59
【问题描述】:
基于 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}或{'key2': 456, 'key1': 123}
随着 QVariant 的 implementation 更改,toPyObject() 被删除并在 pyqt5 中接收到 value()。关于如何获取值而不是对象位置的任何帮助?
【问题讨论】:
-
在 PyQt5 中很少需要使用
QVariant。普通的 Python 对象可以直接传递给任何采用QVariant的 Qt API。空的QVariant可以替换为None。 -
我认为这是解决我遇到的类对象问题的特殊解决方案,但我在 socket_server 中添加了该方法,这不是一个优雅的解决方案,但现在可以完成工作)。所以我又把它拿出来了。我将在本周晚些时候发布该问题,并在此处提供参考。 (它或多或少是我链接的你的例子,它帮助我尝试了 QVarant,乍一看似乎解决了这个问题,但现在我正在根据你的程序结构树写下这个问题;还没有准备好发布它) .
标签: python pyqt4 pyqt5 qvariant