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

Python Eel:Python连接断开时通过JS自动关闭窗口的实现问题

解决Eel Python退出时自动关闭所有窗口的问题

针对你遇到的手动关闭Eel窗口繁琐、ping脚本失效的问题,核心原因是Eel的函数调用是异步的,同步try/catch无法捕获连接失败的错误,以下是可行的解决方案:

方案1:修正Ping脚本(异步错误捕获)

将原脚本的同步try/catch改为异步Promise捕获,因为Eel暴露的函数调用会返回Promise对象,错误需要通过.catch()处理:

setInterval(pingEel, 250);

function pingEel() {
  // 调用Eel暴露的Python函数,并捕获异步错误
  eel.ping_eel()().catch(() => {
    console.log("Eel连接中断,Python已退出,正在关闭窗口");
    // 处理部分浏览器无法直接关闭非脚本打开窗口的限制
    window.open('', '_self', '').close();
  });
}

同时需要在Python端定义对应的ping_eel函数:

import eel

@eel.expose
def ping_eel():
    # 仅返回标识,用于确认连接存活
    return "pong"

# 初始化Eel的代码...

方案2:监听Eel连接断开事件(更可靠)

如果你的Eel版本支持disconnect事件(部分新版本已内置),可以直接监听连接断开,无需轮询:

eel.on('disconnect', () => {
    console.log("Python进程已退出,关闭窗口");
    window.open('', '_self', '').close();
});

关键注意事项

  • 部分浏览器会阻止脚本关闭非由脚本打开的窗口,因此用window.open('', '_self', '').close()替代直接window.close()来绕过限制;
  • 调整轮询间隔(比如从250ms改为500ms)可以减少不必要的网络请求,同时不影响响应速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:45:22