我试图让PyQt应用程序与JS通信,但无法从python获取值。我在python端有两个插槽来获取和打印数据。在这个例子中,一个int从JS传递给python,python向它添加5并将其传递回去,然后JS调用另一个slot来打印新值。在
var backend = null;
var x = 15;
new QWebChannel(qt.webChannelTransport, function (channel) {
backend = channel.objects.backend;
backend.getRef(x, function(pyval){
backend.printRef(pyval)
});
});
^{pr2}$
输出:
inside getRef 15
Could not convert argument QJsonValue(null) to target type int .
期望:
inside getRef 15
inside printRef 20
我不明白为什么返回的值是空的。如何将pyval存储到js端的变量中以便以后使用?在
C++中,这样一个方法可以返回一个值,它必须声明为^ {CD1>},而PyQt中的等价物是使用^ {CD2>}在^ {CD3>}装饰器:
主.py
^{pr2}$索引.html
更新:
一般来说,QtWebChannel只能从Qt端传输可以转换成QJsonObject的信息,从javascript端传输可以转换成JSON的数据。在
所以有一些特殊情况:
输出:
- dict:
^{8}$输出:
如您所见,QJsonValue被返回,因此获取信息可能很麻烦,因此在这里,解决方法是将它们打包到一个列表中:
输出:
相关问题 更多 >
编程相关推荐