Applet to Python 接口使用指南
在嵌入式应用程序中,此页面上的 JavaScript 可以使用
window.appletPythonObject
对象执行 Python 代码并与后端交互。适用于任何嵌入式应用程序环境。初始化通信通道
在应用程序加载时,设置通信通道以便 JavaScript 可以与 Python 通信。
将qwebchannel.js
文件加载到你的应用程序中:
html <head> <script language="javascript" src="./qwebchannel.js"></script> </head>
你可以从指定位置获取
qwebchannel.js
并将其部署到你的应用程序的 Web 服务器中。创建 Web 通道通信对象
在应用程序加载完成后,创建 Web 通道通信对象:
javascript window.onload = function() { if (!qt || !qt.webChannelTransport) { return; } new QWebChannel(qt.webChannelTransport, function(channel) { window.appletPythonObject = channel.objects.python; window.appletPythonObject.exec("print('Hello, World!')"); }); }
执行 Python 代码
执行 Python 语句:
javascript if (window.appletPythonObject) { window.appletPythonObject.exec("__import__('applet_module').setConfiguration('value')"); }
此 JavaScript 调用将立即返回, 需要先启用对应的权限
window.appletPythonObject.Execute
, Python 将异步完成工作。你可以注册回调函数,在 Python 完成时执行相应操作:
javascript window.appletPythonObject.exec( "import applet", function() { alert("数据已处理!"); } );
执行 Python 表达式
执行 Python 表达式,需要先启用对应的权限
window.appletPythonObject.Execute
并获取执行后的状态。字符串表达式
javascript if (window.appletPythonObject) { window.appletPythonObject.exec( "import applet", function(result) { alert("数据=" + result); } ); }
获取 Python 表达式的结果
要获取 Python 表达式的结果,需要先启用对应的权限
window.appletPythonObject.Execute
并提供一个回调函数。当 Python 代码执行完成时,桥接将调用该函数并返回结果。字符串表达式
javascript if (window.appletPythonObject) { window.appletPythonObject.eval( "applet", function(result) { alert("数据=" + result); } ); }
添加 Python 文件
要添加 Python 文件,需要先启用对应的权限
window.appletPythonObject.Write
。添加文件
javascript if (window.appletPythonObject) { window.appletPythonObject.registrationFile( "../test.py", "ggg = 1", function(result) { alert("添加文件结果=" + result); } ); }
添加 Python 环境
要添加 Python 环境,需要先启用对应的权限
window.appletPythonObject.Write
。添加环境
javascript if (window.appletPythonObject) { window.appletPythonObject.registrationPath( "..", function(result) { alert("添加环境结果=" + result); } ); }
接受 python 发送过来的信息
javascript if (window.appletPythonObject) { window.appletPythonObject.receiveInfo.connect(function(name){ console.log(name); }); }
技巧和注意事项
详细了解 Python 语言定义,理解语句执行与表达式求值之间的区别。语句可以包含多个操作和控制流程(如
if
和for
),而表达式则会返回一个值。在执行的 Python 代码中,确保所需的模块已经在代码中导入。
当前没有详细的错误处理机制,因此如果 Python 代码端出现异常,JavaScript 函数可能会返回空字符串或零。