大家好,我是何三,80后老猿,独立开发者

今天咱们来聊一个超实用的 Python 库——Eel。它能让你用最熟悉的 HTML/JS 做前端界面,Python 做后端逻辑,轻松开发出桌面 GUI 应用!关键是轻量、简单、无需复杂配置,特别适合想快速上手 GUI 开发的小伙伴。下面直接上干货!

一、Eel 是什么?

Eel 是一个轻量级的 Python 库,通过启动本地 Web 服务器,将前端界面(HTML/JS)与后端 Python 无缝连接。简单来说: - 前端用 HTML/JS 写界面,颜值自由发挥(甚至能用 Vue、React 等框架)。 - 后端用 Python 处理复杂逻辑,调用各种库(比如数据分析、AI 模型)。 - 交互双向打通:JS 能调用 Python 函数,Python 也能调用 JS 方法。

更棒的是,Eel 基于 Chrome 内核运行,所以需要提前安装 Chrome 浏览器哦!

二、安装 Eel:一行命令搞定

安装只需要一条命令,建议用国内镜像加速:

pip install eel -i https://pypi.doubanio.com/simple

如果安装卡顿,可以试试其他镜像源,比如清华源或阿里云。

三、手把手写一个 Demo:计数器应用

咱们来写一个简单的计数器应用:点击按钮,数字增减,数据由 Python 处理并返回给前端。

1. 项目结构

demo/
├── main.py    # Python 后端
└── web/
    ├── index.html  # 前端界面
    └── eel.js      # Eel 自动生成(不用手动创建)

2. Python 后端代码(main.py)

import eel

# 初始化前端文件所在的文件夹
eel.init("web")

@eel.expose  # 暴露函数给 JS 调用
def add_number(current, delta):
    new_num = int(current) + int(delta)
    return new_num  # 返回结果给前端

# 启动应用:指定页面、窗口大小、关闭时退出 Python
eel.start("index.html", size=(300, 200), shutdown_delay=5)

3. 前端界面代码(web/index.html)

<!DOCTYPE html>
<html>
<head>
    <title>Eel 计数器</title>
    <script type="text/javascript" src="/eel.js"></script>  <!-- 引入 eel.js -->
</head>
<body>
    <h1>当前数值:<span id="num">0</span></h1>
    <button onclick="change(-1)">-1</button>
    <button onclick="change(1)">+1</button>

    <script>
        let current = 0;

        // 调用 Python 的 add_number 函数
        async function change(delta) {
            current = await eel.add_number(current, delta)();  // 注意双括号!
            document.getElementById("num").innerHTML = current;
        }
    </script>
</body>
</html>

4. 运行效果

在项目根目录执行:

python main.py

会自动弹出 Chrome 窗口,点击按钮即可看到数值变化(Python 实时计算)!

四、代码解析

  1. 双向通信
  2. @eel.expose 将 Python 函数暴露给 JS。
  3. JS 通过 eel.函数名() 调用 Python,并用 await 异步等待结果。
  4. 启动参数
  5. size 控制窗口大小,shutdown_delay 指定关闭窗口后 Python 进程的存活时间(避免闪退)。
  6. 注意事项
  7. JS 调用 Python 函数时,函数名后需要加两对括号(例如 eel.add_number()())。
  8. 前端资源(HTML/CSS/JS)必须放在 eel.init() 指定的文件夹内。

五、还能玩什么?

  • 结合 Vue/React:用前端框架美化界面,比如网页3的案例用 Vue 实现了动态渲染。
  • 文件操作:用 Python 读写本地文件,比如网页2中的文件浏览器应用。
  • 打包成 exe:用 pyinstaller 将代码打包为独立应用,隐藏命令行窗口(参数加 --noconsole)。

六、总结

Eel 的优势在于极简灵活,特别适合以下场景: - 想快速开发小工具,又不想学复杂 GUI 框架(如 PyQt)。
- 前端同学想用 Python 增强功能,但不愿碰后端语言。
- 需要结合 Python 生态(如爬虫、AI)的桌面应用。

参考资料
- Eel 官方文档:https://github.com/ChrisKnott/Eel

🔥 福利时间:关注公众号【何三笔记】,后台回复关键词「20250217」,即可免费领取《清华大学出品DeepSeek使用精髓》系列资料:

  • 【清华大学第一版】DeepSeek从入门到精通.pdf
  • 【清华大学第二版】DeepSeek赋能职场.pdf
  • 【清华大学第三版】普通人如何抓住DeepSeek红利.pdf
  • 【清华大学第四版】DeepSeek+DeepResearch:让科研像聊天一样简单.pdf
  • 【清华大学第五版】DeepSeek与AI幻觉.pdf

公众号二维码