pyqt5 QWebEngineView与js交互问题

new QWebChannel(qt.webChannelTransport,
function(channel) {
    {
        window.my_object = channel.objects.my_object;
        alert(my_object.test.myHello()); // ———— 1
    }
});

以上代码使用python 插入 到页面中(html引入qwebchannel.js无法正确执行,不明白原因)后,1 中的代码可以正确输出

$("#get-info").on('click',
function() {
    alert(my_object); // ———— 2
});

2 中的代码却输出 undefined,请问这是为什么?

阅读 6.7k
3 个回答
新手上路,请多包涵

没有$对象?

html引入qwebchannel.js无法正确执行,不明白原因

这个报什么错误, 能否细描述一下.

2 中的代码却输出 undefined

很可能是 "代码2" 较 "代码1" 先执行, 你可以通过浏览器的调试工具查看当前页面的对象.

新手上路,请多包涵

pyqt返回来的值必须写一个方法接收,如上面方法所示
js调用Python函数时,传递给python的参数默认为构造函数,如果想传递自定义参数,随便传,只是在参数列表的最后,一定要加上回调函数,自定义参数需要在python函数的形参列表中声明,回调函数则是默认的,不需要声明。对于上面错误,可以使用以下两种方式:

 pyjs.myHello(alert);

或者

pyjs.myHello(function (res) {
                    alert(res)
                })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进