# Javascript–Python 桥接器

# 从Python运行Javascript代码

window.evaluate_js(code, callback=None)允许您执行任意Javascript代码,并同步返回最后一个值。如果提供了回调函数,则会解析promises,并调用回调函数,并将结果作为参数。Javascript类型转换为Python类型,例如JS对象转换为字典,数组转换为列表,undefined转换为None。如果执行的Javascript代码导致错误,将在Python抛出一个 webview.util.JavascriptException 类型的异常。

例子.

# 从Javascript运行Python代码

从Javascript执行Python函数可以通过两种不同的机制完成。

  • 通过将Python类的实例暴露给create_windowjs_api参数。 该类的所有可调用方法都将以pywebview.api.method_name的形式公开给JS域,并带有正确的参数签名。 方法名不得以下划线开头。允许嵌套类,并在Javascript中将其转换为嵌套对象。以下划线开头的Cclass属性不会公开。可参考 例子.

  • 通过expose(func)将函数传递给窗口对象。这将向JS域公开一个或多个函数,如下pywebview.api.func_name. 与JS API不同,expose允许在运行时也可以暴露函数。 如果JS API和公开函数之间存在名称冲突,则后者优先。 可参考 例子.

暴露的函数返回一个已解析为其结果值的promise。异常被拒绝并封装在Javascript中 Error 对象。 Stacktrace可通过error.stack访问。 暴露的函数在单独的线程中执行,不是线程安全的。

windows.pywebview.api不能保证在window.onload上可用。请订阅window.pywebviewready事件,以确保window.p/webview.api已准备就绪。

Example.