这个问题可能有点令人困惑,所以让我给你一些背景知识。 Eel 是一个 Python 模块,您可以在其中使用 Python 编写的函数并在 Javascript 中使用它们,反之亦然。我想要做的是获取一个由 Python 函数生成的 json,将其放入 Javascript 中,然后根据从 Python 端获取的 json 创建一个表。这是一个例子。
python.py
def json_example():
json = [
{
"key": "value1"
},
{
"key": "value2"
}
]
return json
js.html
<body>
<div></div>
</body>
<script>
function js_example() {
# This is where the function from Python is called
var json_obj = eel.json_example();
var tbl = $("<table/>").attr("id", "example_table");
$("div").append(tbl);
for(var i=0; i<json_obj.length; i++){
var tr="<tr>";
var td="<td>"+obj[i]["key"]+"</td></tr>";
$('#example_table').append(tr+td);
}
}
我分别测试了这两个功能,并做了一些改动,它们都可以正常工作。然而,这就是问题的开始。出于某种原因,Javascript 部分没有从它从 Python 代码调用的函数中获取任何信息。变量“json_obj”应该等于我在 Python 函数中创建的 json,但由于某种原因,该函数的返回值没有创建可以在 Javascript 中操作的有形数据,基本上什么都不返回。鳗鱼转移本身也有效。如果将“return”替换为“print”,它将在控制台中打印 json。
此外,请不要告诉我只将 json 本身放在 Javascript 中。我有理由需要来自 Python 端的 json。
基本上,这是我的问题:如何获得 Python 函数来创建可以在 Javascript 中操作的值?
最佳答案
问题在于,当 eel 公开一个函数时,它实际上所做的是创建一个新函数,该函数将返回一个包含 python 函数返回值的 promise。
所以你应该有这样的东西:
let json_obj = '';
eel.json_example()(x => json_obj = x);
如果您需要有关回调的更多帮助,请参阅 https://github.com/ChrisKnott/Eel .
关于javascript - 如何使用 Eel 将 json 对象从 Python 函数传递到 Javascript,您可以在其中使用和操作 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48589123/