Pywebview:用 Web 技术构建轻量级原生桌面应用
Pywebview 是一个轻量级跨平台 Python 库,允许使用 Web 技术(HTML、CSS、JavaScript)构建原生桌面 GUI 应用,通过复用系统自带 WebView 组件实现界面渲染。
官方文档:https://pywebview.flowrl.com
一、什么是 Pywebview?
Pywebview 是一个轻量级跨平台 Python 库,允许开发者使用 Web 技术(HTML、CSS、JavaScript)构建原生桌面 GUI 应用。与 Electron 等框架不同,Pywebview 不捆绑 Chromium 内核,而是直接复用操作系统自带的 WebView 组件来实现界面渲染,因此体积极小、启动速度极快。
简单来说,Pywebview 让你可以用写网页的方式写桌面应用,但最终产物是一个真正的原生窗口程序,而不是一个套壳的浏览器。
二、核心功能与特点
1. 跨平台支持
Pywebview 兼容 Windows、macOS、Linux 和 Android,无需为不同系统编写多套代码:
| 平台 | 底层 WebView 引擎 |
|---|---|
| Windows | Edge WebView2 |
| macOS | WebKit(Safari 内核) |
| Linux | GTK + WebKit 或 Qt WebEngine |
| Android | Android WebView |
2. 轻量级原生封装
不捆绑浏览器内核,体积极小,内存占用远低于 Electron 等框架:
| 特性 | 说明 |
|---|---|
| 无捆绑内核 | 复用系统 WebView,无需加载完整 Chromium |
| 原生外观 | 窗口样式遵循系统规范,与原生应用一致 |
| 极低内存 | 内存占用远低于 Electron 等框架 |
3. 双向通信能力
支持 JavaScript 与 Python 无缝交互:
| 通信方向 | 实现方式 |
|---|---|
| Python → JS | 使用 evaluate_js() 执行 JavaScript 代码 |
| JS → Python | 通过 js_api 参数传递 Python 对象,暴露 API 给 JS |
| 异步支持 | 支持 async/awAIt 异步调用 |
4. 内置功能丰富
提供 HTTP 服务器、窗口管理、原生对话框、DOM 操作等功能。
三、安装与快速开始
1. 基础安装
使用 pip 命令一键安装:
pip install pywebview
2. 可选依赖
根据系统选择额外组件:
# Linux Qt 支持 pip install pywebview[qt] # Windows CEF 支持 pip install pywebview[cef]
3. 代码示例
创建窗口并加载网页:
import webview
def main():
webview.create_window('My App', 'https://www.example.com', width=800, height=600)
webview.start()
if __name__ == '__main__':
main()4. 加载本地 HTML
可直接加载本地前端文件:
webview.create_window('My App', 'file:///path/to/index.html')四、与 Electron 对比
| 对比维度 | Pywebview | Electron |
|---|---|---|
| 应用体积 | 极小(不捆绑浏览器内核) | 庞大(捆绑完整 Chromium) |
| 启动速度 | 极快 | 较慢 |
| 内存占用 | 极低 | 较高 |
| 原生外观 | 遵循系统规范 | 需额外定制 |
| WebView 版本 | 依赖系统(旧系统可能受限) | 固定版本,兼容性好 |
| 高级特性 | 需手动适配 | 开箱即用 |
| 开发语言 | Python | JavaScript / TypeScript |
五、打包分发
Pywebview 可与 PyInstaller、Nuitka、py2app 等工具集成,生成独立可执行文件,方便分发部署。
六、版本状态
| 项目 | 信息 |
|---|---|
| 当前最新版本 | 6.2.1(2026 年 7 月更新) |
| GitHub 最后提交 | 2026 年 5 月 |
| 许可证 | BSD-3-Clause |
| 维护状态 | 持续维护中 |
说明:
• 以上信息整理自 Pywebview 官方文档及公开资料,数据截至 2026 年 8 月。
• 官方文档地址:https://pywebview.flowrl.com
• 具体功能和使用方法以官方最新文档为准。
