javascript - 数组未从 Python Eel 传递到 Javascript
问题描述
嗨,我目前正在使用 Python Eel、JS 和 HTML 开发桌面应用程序,但似乎无法将 Python 列表传递给 JS 以获取新功能。Python 端工作正常,因为它为我打印出预期的文件名列表。如果我在 JS 脚本中插入一个 let array = ['a','b','c'] ,那么我会得到 3 个标记为 so 的按钮,但是当尝试将列表从 Python 传递给 JS 时它不起作用并且我收到一个回调 = null 错误。我尝试了多种方法来解决这个问题,但似乎找不到答案!(PS:我已经尝试过注释和未注释的 json 行,但这些都不起作用)。
Python脚本:
@eel.expose
def OverView_Data():
Acc_Files = os.listdir("C:\\Users\\Bex\\Records\\Accessioning")
Acc_Files = [x[:-4] for x in Acc_Files]
#Acc_Files = json.dumps(Acc_Files)
#Acc_Files = json.loads(Acc_Files)
print(Acc_Files)
return (Acc_Files)
JS脚本:
eel.expose(OverView);
async function OverView(){
let Array = await eel.OverView_Data()
console.log(Array)
for (var i=0; i<Array.length; i++) {
var btn = document.createElement("button");
var t = document.createTextNode(Array[i]);
btn.appendChild(t);
document.body.appendChild(btn);
}
}
解决方案
尝试改用这一行:
let Array = await eel.OverView_Data()();
不同之处在于()
现有行的末尾。您可以在Eel 文档页面上阅读更多关于为什么需要这种方法的信息(只需在页面上搜索await
相关部分)。
最后,一个不相关的建议......您应该考虑避免使用名为的 JavaScript 变量,Array
因为Array是 JavaScript 中的全局对象,它可能会导致一些问题。
推荐阅读
- javascript - why does it not 'add to cart' when I click add to cart?
- excel - COUNTIF 跨多个“重命名”工作表
- asp.net - 在单页应用程序中添加服务器端代码
- r - Rmarkdown YAML 标头中的作者从属关系,使用 rticles
- ruby-on-rails - 如何将 ajax 附加到 Rails 中的关注/取消关注链接
- android - ListView:如何在单击 ListView 中的按钮时转到新活动?
- c++ - Visual Studio 17 调试属性未导出到模板
- user-interface - 如何在 GUI 中实现我的 while 循环以使用 Visual Studio 在 C/C++ 中保持按键
- python - 是否可以仅使用哈希来查找文件和文件路径
- asp.net - 编译错误:C:\Users\mhomes\AppData\Local\Temp\8\Temporary ASP.NET Files\ 行:90