我无法解决问题。我写了一个程序,这是它的简短描述: 一种应用程序,其逻辑是用 python 编写的,并且使用 HTML 和 CSS 呈现了界面。 Python导入的模块 eel 。 Python有一个返回数组的函数。在JS中,将创建一个使用函数结果的变量,然后将结果写入HTML类。看起来是这样:
Python代码
import eel
import datetime
import sys
eel.init("web")
isoWD = datetime.datetime.today().isoweekday()
@eel.expose
def some_func():
if isoWD == 1:
result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']
elif isoWD == 2:
result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']
elif isoWD == 3:
result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']
elif isoWD == 4:
result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']
elif isoWD == 5:
result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']
elif isoWD == 6:
result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']
elif isoWD == 7:
sys.exit()
return result
eel.start("main.html", size=(325, 450))
HTML代码
function display() {
var res = eel.some_func();
for (var i = 0; i <= 'block__les'.length; i++) {
document.getElementsByClassName('block__les')[i].innerHTML = res[i];
}
}
display();
<div class="wrapper">
<div class="block">
<div class="block__num">
<p>(1)</p>
</div>
<div class="block__les"></div>
<div class="block__time">09.00 - 09.30</div>
</div>
<div class="block">
<div class="block__num">
<p>(2)</p>
</div>
<div class="block__les"></div>
<div class="block__time">09.40 - 10.10</div>
</div>
<div class="block">
<div class="block__num">
<p>(3)</p>
</div>
<div class="block__les"></div>
<div class="block__time">10.20 - 10.50</div>
</div>
<div class="block">
<div class="block__num">
<p>(4)</p>
</div>
<div class="block__les"></div>
<div class="block__time">11.00 - 11.30</div>
</div>
<div class="block">
<div class="block__num">
<p>(5)</p>
</div>
<div class="block__les"></div>
<div class="block__time">11.40 - 12.10</div>
</div>
<div class="block">
<div class="block__num">
<p>(6)</p>
</div>
<div class="block__les"></div>
<div class="block__time">12.20 - 12.50</div>
</div>
<div class="block">
<div class="block__num">
<p>(7)</p>
</div>
<div class="block__les"></div>
<div class="block__time">13.00 - 13.30</div>
</div>
<div class="block">
<div class="block__num">
<p>(8)</p>
</div>
<div class="block__les"></div>
<div class="block__time">13.40 - 14.10</div>
</div>
</div>
输出:
数组元素应在数字和时间之间输出。但是那里是空的。
答案 0 :(得分:0)
为了得到暴露给eel的python函数发送的结果,javascript函数display应该变成async函数,我们应该await< /strong> 结果来自 python 函数。
因此,display 函数变为:
<script type="text/javascript">
async function display() {
var res=await eel.some_func()();
for (var i = 0; i <= document.getElementsByClassName('block__les').length ; i++) {
document.getElementsByClassName('block__les')[i].innerHTML = res[i];
}
}
display();
</script>
还有一点要提,不过和eel
没有关系,在display
函数中,'block__les'.length没有给出'block__les' 类,但它给出了单词 {{1}} 的字符数,即 10。
并且为了'block__les'类的项目数,我们可以使用document.getElementsByClassName('block__les').length,它给出了8,正确的号。
当然不要忘记放
block__les
在 <script type="text/javascript" src="/eel.js"></script>
的头部部分
最后不要忘记改变:
main.html
变成 8 个项目以匹配 HTML 中显示的项目数。
result = ['elems', 'elems', 'elems', 'elems', 'elems', 'elems']