我有一个 Python 文件和一个 QML 文件。我从 QML 获取 Python 文件中的值,值的类型是 QJSValue ,我想将其转换为 Python 列表。我不知道该怎么做。
以下是我的代码。
测试.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()
Run Code Online (Sandbox Code Playgroud)
测试.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"}])
}
}
Run Code Online (Sandbox Code Playgroud)
我意识到这个问题非常古老,但我想我应该发布我是如何找到解决方案的,以防其他人通过谷歌偶然发现它。虽然从技术上讲它不是直接转换为 python 列表,但我发现有用的是将myQJSValueInstance.toVariant()实例转换为QVariant. 然后我可以根据需要使用该对象(例如,像普通的 python 列表一样迭代它)。
| 归档时间: |
|
| 查看次数: |
1027 次 |
| 最近记录: |