Eel Python:如何将Python函数循环值返回至JavaScript
解决Eel中Python循环输出全部值到JavaScript的问题
你的问题出在Python函数里的return语句——只要执行return,函数会立刻终止,所以循环只跑了第一次就返回0,后续的1-9根本没机会执行。下面给两种可行的解决办法:
方案1:一次性返回所有结果列表
把循环生成的所有值收集到列表里,最后统一返回给JavaScript,再在JS里遍历打印:
修改后的Python代码
import eel eel.init(".") @eel.expose def login_details(login_email,login_pass): result = [] for i in range(10): result.append(i) return result # 循环结束后返回完整列表 eel.start("index.html", size=(650,612))
修改后的JavaScript代码
<script> login_email = document.getElementById("email"); login_pass = document.getElementById("pass"); function details() { eel.login_details(login_email.value,login_pass.value)(login_check); } function login_check(stat_list) { // 遍历列表打印每个数值 stat_list.forEach(num => console.log(num)); } </script>
方案2:Python实时调用JS函数输出
如果需要循环过程中实时输出每个值(而不是等所有循环结束再打印),可以让Python主动调用JavaScript的打印函数,每次循环传递一个值:
修改后的Python代码
import eel eel.init(".") @eel.expose def login_details(login_email,login_pass): for i in range(10): eel.print_num(i) # 主动调用JS的print_num函数传递当前值 # 可选:添加短暂延迟避免消息堆积 # eel.sleep(0.1) eel.start("index.html", size=(650,612))
修改后的JavaScript代码
<script> login_email = document.getElementById("email"); login_pass = document.getElementById("pass"); function details() { eel.login_details(login_email.value,login_pass.value); } // 暴露给Python调用的打印函数 eel.expose(print_num); function print_num(num) { console.log(num); } </script>
内容的提问来源于stack exchange,提问作者Suprava
相关产品推荐
相关产品推荐

