You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eel应用中JS无法调用Python函数:切换按钮无终端输出

解决Eel切换按钮点击后终端不打印"Test"的问题

问题根源

  1. 函数名称不匹配:JavaScript代码中调用的是eel.AfkOn(),但Python端暴露的函数是toggleAfk,Eel无法找到对应的Python函数,导致调用无效。
  2. 点击事件未绑定:HTML中的checkbox没有绑定触发AfkOn函数的事件,函数本身从未被执行。

修复方案

1. 统一Python与JS的函数名称

修改Python代码,将暴露的函数名改为AfkOn,与JS中的调用保持一致:

import eel

@eel.expose
def AfkOn():
    print('Test')

# 确保Eel初始化与启动代码正确
eel.init('web')  # 替换为你的前端文件所在目录
eel.start('index.html')

2. 给checkbox绑定点击/变更事件

有两种方式实现事件绑定:

  • 方式一:直接在HTML标签中添加onclick属性
<div class="container-afk">
    <label class="toggle_box">
        <input type="checkbox" id="checkbox" onclick="AfkOn()">
        <div class="circle"></div>
        <h3 class="afk-text">AFK Reply</h3>
    </label>
</div>
  • 方式二:在JavaScript中使用addEventListener(更推荐的模块化写法)
<script src="eel.js"></script>
<script src="script.js"></script>
<script>
    function AfkOn() {
        console.log('Checkbox clicked');
        var checkbox = document.getElementById('checkbox');
        if (checkbox.checked) {
            eel.AfkOn();
        }
    }
    // 页面加载完成后绑定事件
    document.addEventListener('DOMContentLoaded', function() {
        document.getElementById('checkbox').addEventListener('change', AfkOn);
    });
</script>

验证

修改完成后重启Eel应用,点击切换按钮:

  • 浏览器控制台会打印Checkbox clicked
  • Python终端会打印Test

内容的提问来源于stack exchange,提问作者Kaiden Hoffe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:56:19