大家好,我是何三,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 实时计算)!
四、代码解析
- 双向通信:
@eel.expose
将 Python 函数暴露给 JS。- JS 通过
eel.函数名()
调用 Python,并用await
异步等待结果。 - 启动参数:
size
控制窗口大小,shutdown_delay
指定关闭窗口后 Python 进程的存活时间(避免闪退)。- 注意事项:
- JS 调用 Python 函数时,函数名后需要加两对括号(例如
eel.add_number()()
)。 - 前端资源(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