PyWebView 概述
PyWebView 是一个轻量级且强大的 Python 库,允许使用 Web 技术(HTML、CSS、JavaScript)构建桌面应用程序的图形用户界面(GUI)。
简单来说,PyWebView 将 Python 后端逻辑与 Web 前端界面无缝连接,让你可以用开发网页的方式开发桌面软件。
核心特点
PyWebView 的设计理念是'最小化依赖,最大化兼容'。相比于 Electron 或 PyQt,具有以下显著优势:
- 轻量级与高性能:不捆绑浏览器内核,直接调用系统原生的 WebView 组件。安装包体积比 Electron 小约 90%,内存占用大幅降低。
- 跨平台:一套代码可运行在 Windows、macOS 和 Linux 上。
- 原生外观:Windows 使用 Edge/IE 引擎,macOS 使用 WebKit(Safari 内核),Linux 使用 GTK WebKit。在不同系统上获得接近原生的渲染效果。
- 双向通信:支持 JavaScript 调用 Python 函数,也支持 Python 调用 JavaScript 代码。
架构对比
| 特性 | PyWebView | Electron | PyQt/Tkinter |
|---|---|---|---|
| 开发语言 | Python + Web (HTML/CSS/JS) | JavaScript/TypeScript | 纯 Python |
| 体积与资源 | 轻量 (依赖系统内核) | 笨重 (自带 Chromium) | 中等 |
| 界面美观度 | 高 (Web 技术易做特效) | 高 | 一般 (Tkinter) / 高 (PyQt) |
| 适用场景 | 中小型工具、已有 Web 前端的项目 | 大型跨平台应用 | 需要深度系统交互的应用 |
快速上手示例
通过 pip install pywebview 安装。
最简单的入门代码,打开一个窗口并加载百度首页:
import webview
# 创建窗口,标题为'百度',URL 为百度首页
window = webview.create_window('百度', 'https://www.baidu.com')
# 启动应用
webview.start()
前后端交互
PyWebView 最强大的地方在于 Python 与 JavaScript 的互操作。这打破了前后端的壁垒,让你可以用 Python 处理文件操作、数据计算等逻辑,而用 JS 处理界面交互。
1. JS 调用 Python
你可以将 Python 的类方法暴露给前端。在 JS 中通过 pywebview.api.方法名 即可调用。
import webview
class Api:
def greet():
window = webview.create_window(, , js_api=Api())
webview.start()

