首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用外部HTML文件在javascript和cefpython中公开python函数

如何使用外部HTML文件在javascript和cefpython中公开python函数
EN

Stack Overflow用户
提问于 2022-04-07 07:54:29
回答 1查看 110关注 0票数 0

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

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

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2022-08-25 08:48:28

可能太晚了,但是的.

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

代码语言:javascript
复制
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)

在这里,"object_name_in_js“和类似的内容将是在javascript中调用对象和函数的方式。python中的对象和类似的东西是它们在python文件中的名字。然后,在js文件(或html文件的脚本标记中)中,直接引用它们。

代码语言:javascript
复制
function_name_in_js()
property_name_in_js = ...

诸若此类。希望这能帮到别人!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71778311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档