首页
  • 产品
    • 小程序(applet)
    • 批量处理(BatchPlus)
    • 数墨(DigiInk)maya
    • 数墨(DigiInk)nuke
    • 法线(normal)maya
    • 视频信息(videoInfo)
  • 更多
    • 论坛(CG工业社)
    • 关于
  • 登录
  • 注册
  1. file
  2. path
  3. python
  4. settings
  5. system

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 new QWebChannel(qt.webChannelTransport, channel=> { for(const i in channel.objects){ const name = 'applet'+i.charAt(0).toUpperCase() + i.slice(1)+'Object'; if(!window.hasOwnProperty(name)){ window[name] = channel.objects[i] } } console.log('init done'); }); 或 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 函数可能会返回空字符串或零。