如何使用带有外部HTML文件的cefpython在javascript中公开python函数



我正试图用cefpython为一个项目编写一个HTML GUI。我已经能够用HTML创建一个可工作的GUI,但我希望能够用javascript公开python函数。在cefpython GitHub repo中有一个关于如何做到这一点的教程,但它涉及到在python程序中用字符串编写HTML,并将其转换为数据URI。有没有一种方法可以连接python和javascript,同时将HTML保存在一个单独的文件中?现在,我已经将HTML文件的地址作为要打开的URL传递给了cefpython,但我不一定需要使用该方法。我只想在一个外部文件中有HTML,并从该页面上运行的javascript调用python函数(这样我就可以通过按下页面上的按钮来调用python函数。(

编辑:我的问题是:如何使用cefpython库从外部HTML文件中包含的javascript调用python函数?

from cefpython3 import cefpython as cef
import sys, os
sys.excepthook = cef.ExceptHook
cef.Initialize()
cef.CreateBrowserSync(url="file:///./main.html")
cef.MessageLoop()
cef.Shutdown()

答案可能为时已晚,但是的。。

定义一个函数来绑定您希望在javascript中访问的python中的对象/函数/属性。

from cefpython3 import cefpython as cef
import sys, os
sys.excepthook = cef.ExceptHook
cef.Initialize()
browser = cef.CreateBrowserSync(url="file:///./main.html")
set_javascript_bindings(browser)
cef.MessageLoop()
cef.Shutdown()
def set_javascript_bindings(browser):
bindings = cef.JavascriptBindings(
bindToFrames=False, bindToPopups=False)
bindings.SetObject("object_name_in_js", your-object-in-python)
bindings.SetProperty("property_name_in_js", your-property-in-python)
bindings.SetFunction("function_name_in_js", your-function-in-python)
browser.SetJavascriptBindings(bindings)

这里,";对象名称_;类似的事情将是如何用javascript调用对象和函数。python等中的对象是它们在python文件中的名称。然后,在js文件中(或在html文件的script标记中(,直接引用它们。

function_name_in_js()
property_name_in_js = ...

等等。希望这能帮助到别人!

最新更新