如何从pyqt5.7中的JavaScript访问Python代码?

2024-10-01 09:36:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我以前是通过附加一个物体来完成的

self.page().mainFrame().addToJavaScriptWindowObject("js_interface", self.jsi)

在5.7中我做了:

^{pr2}$

但当我试图访问公开的函数时,我会遇到一个JavaScript错误,这是可以理解的:

js: Uncaught ReferenceError: js_interface is not defined

我在网上搜索发现我应该用qwebchannel.js,但我找不到在任何地方使用它的文件或说明(这里有一些信息,但只是在安装QT时提供的一些示例中,而不是PyQT)。在


Tags: 函数self错误pagejsjavascriptinterface物体
3条回答

我认为这是一个很大的缺点,JS不能像以前用“addToJavaScriptWindowObject”命令那样在PyQT5.9+中直接与Python通信。 使用websockets。。。如果防火墙很重,所有端口都被阻塞了怎么办。在

我想我将依赖简单的回调(从Python到JS的长池类型检查更改/命令)方法,而不使用QTWebChannel。在

看看this page。它包含了一个有用的示例(用c++编写,但很容易翻译成python)。在

首先,你必须使用websocket从html到你的应用程序和viceversa进行通信。在

然后你可以设置你的QWebChannel。在

你可以包括qwebchannel.js使用脚本标记进入html页面:

<script src="qrc:///qtwebchannel/qwebchannel.js"></script>

然后,在python端创建一个web频道:

^{pr2}$

与web频道交互的JS代码:

new QWebChannel(qt.webChannelTransport, function (channel) {
    window.handler = channel.objects.handler;
    window.handler.test();
});

相关问题 更多 >