首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Eel将JavaScript变量值传递给Python

使用Eel将JavaScript变量值传递给Python
EN

Stack Overflow用户
提问于 2020-08-12 02:40:25
回答 1查看 1.1K关注 0票数 0

我有一个python程序,使用eel库来构建一个很好的GUI。

在GUI中,JS函数中有一个变量,我需要将其传递给Python以存储在一个变量中。

你知道为什么会这样吗?

EN

回答 1

Stack Overflow用户

发布于 2020-09-09 20:18:22

你可以阅读下面的Github文章。也许这会有帮助。

https://github.com/samuelhwilliams/Eel

返回值虽然我们希望将我们的代码看作是由单个应用程序组成的,但Python解释器和浏览器窗口在单独的进程中运行。这可能会使它们之间的通信变得有点混乱,特别是当我们总是必须显式地将值从一端发送到另一端时。

Eel支持两种从应用程序的另一边检索返回值的方式,这有助于保持代码的简洁性。

为了防止Python端永远挂起,在尝试从JavaScript端检索值时设置了超时,默认超时为10000毫秒(10秒)。这可以通过将_js_result_timeout参数设置为eel.init来更改。JavaScript端没有相应的超时。

回调当你调用一个公开的函数时,你可以在调用后立即传递一个回调函数。当函数在另一端完成执行时,此回调将自动与返回值异步调用。

例如,如果我们在Javascript中定义并公开了以下函数:

代码语言:javascript
运行
复制
eel.expose(js_random);
function js_random() {
  return Math.random();
}

然后在Python中,我们可以像这样从Javascript端检索随机值:

代码语言:javascript
运行
复制
    def print_num(n):
        print('Got this from Javascript:', n)

# Call Javascript function, and pass explicit callback function
eel.js_random()(print_num)

# Do the same with an inline lambda as callback
eel.js_random()(lambda n: print('Got this from Javascript:', n))
(It works exactly the same the other way around).

同步返回在大多数情况下,对另一端的调用是为了快速检索某些数据,例如小部件的状态或输入字段的内容。在这些情况下,只需同步等待几毫秒,然后继续您的代码,而不是将整个过程分解到回调中,这会更方便。

要同步检索返回值,只需不向第二组括号传递任何内容。因此,在Python中,我们可以这样写:

代码语言:javascript
运行
复制
n = eel.js_random()()  # This immediately returns the value
print('Got this from Javascript:', n)

您只能在浏览器窗口启动后执行同步返回(在调用eel.start()之后),否则显然会使用挂起进行调用。

在Javascript中,该语言不允许我们在等待回调时阻塞,除非在异步函数内部使用await。因此,来自Javascript端的等效代码将是:

代码语言:javascript
运行
复制
async function run() {
  // Inside a function marked 'async' we can use the 'await' keyword.

  let n = await eel.py_random()(); // Must prefix call with 'await', otherwise it's the same syntax
  console.log("Got this from Python: " + n);
}

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

https://stackoverflow.com/questions/63364441

复制
相关文章

相似问题

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