嗨,我目前正在开发一个使用Python Eel,JS和HTML的桌面应用程序,但似乎无法将Python列表传递到JS中以实现新函数。Python端工作得很好,因为它为我打印出了期望的文件名列表。如果我在JS脚本中插入一个let array = 'a','b','c‘,那么我就会得到3个标记为’a‘,’b‘,’c‘的按钮,但是当我试图将列表从Python传递到JS时,它不起作用,并且我得到了一个callback=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);
}
}
发布于 2021-08-24 19:28:57
尝试使用下面这一行:
let Array = await eel.OverView_Data()();
不同之处在于现有行末尾的()
。您可以在Eel documentation页面上阅读更多关于为什么需要这种方法的信息(只需在await
页面中搜索相关部分)。
最后,一个无关的建议..。您应该考虑避免使用名为Array
的JavaScript变量,因为Array是JavaScript中的全局对象,它可能会导致一些问题。
https://stackoverflow.com/questions/68855216
复制相似问题