如何在Python和QML中将QJSValue转换为Python列表?

如何在Python和QML中将QJSValue转换为Python列表?,python,qml,pyqt5,Python,Qml,Pyqt5,我有一个Python文件和一个QML文件。我从QML获取Python文件中的值,值的类型是QJSValue,我想将其转换为Python列表。我不知道怎么做 下面是我的代码 test.python #!/usr/bin/env python # encoding: utf-8 from PyQt5.QtCore import QUrl, QObject, pyqtSlot,QVariant from PyQt5.QtWidgets import QApplication from PyQt5.

我有一个Python文件和一个QML文件。我从QML获取Python文件中的值,值的类型是QJSValue,我想将其转换为Python列表。我不知道怎么做

下面是我的代码

test.python

#!/usr/bin/env python
# encoding: utf-8

from PyQt5.QtCore import  QUrl, QObject, pyqtSlot,QVariant
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQuick import QQuickView
from PyQt5.QtQml import QJSValue

class MyMain(QObject):

    @pyqtSlot(QJSValue)
    def get_value(self,value):
        print(value,type(value))


if __name__ == '__main__':
    path = 'test.qml'
    app = QApplication([])
    view = QQuickView()
    con = MyMain()
    context = view.rootContext()
    context.setContextProperty("con",con)
    view.engine().quit.connect(app.quit)
    view.setSource(QUrl(path))
    view.show()
    app.exec()
测试.qml

import QtQuick 2.4
import QtQuick.Controls 1.3

Button {
        text: "click"
        onClicked: {
               con.get_value([{"name":"a","text":"1"},{"name":"b","text":"2"}]) 
            }
    }

我意识到这个问题非常古老,但我想我会发布我是如何找到解决方案的,以防其他人通过谷歌偶然发现它。 虽然从技术上讲,它不是到python列表的直接转换,但我发现有用的是执行
myQJSValueInstance.toVariant()
,将实例转换为
QVariant
。然后,我可以根据需要使用该对象(例如,像一个普通的python列表一样对其进行迭代)