PyWebView 浅谈
pywebview是一个轻量级、跨平台的 Python 库,核心功能是在桌面应用中嵌入系统原生的 WebView 组件,让你可以用 HTML/CSS/JavaScript 构建 UI,同时用 Python 处理逻辑——完美匹配'Web 技术做 UI + Python 做后端'的需求。
1. 核心定位
pywebview 不是'打包 Chromium 的 Electron 替代品',而是复用系统自带的 WebView(如 Windows 的 Edge/IE、macOS 的 WebKit、Linux 的 GTK+Webkit/Qt WebEngine),因此:
- 体积极小(无额外浏览器依赖);
- 外观与系统原生应用一致;
- 性能更优(无需加载完整的 Chromium)。
2. 关键特点
(1)跨平台支持
覆盖主流桌面系统,嵌入式 Linux 也友好(需 X11/Wayland 图形环境):
- Windows:默认用 Edge (WebView2),兼容 IE11(可选);
- macOS:用系统 WebKit(Safari 内核);
- Linux:默认用 GTK+3 + WebKit2GTK,可选 Qt WebEngine(需 PyQt5/PySide2)。
(2)双向通信(JS ↔ Python)
最核心的能力之一——让 Web UI 和 Python 后端无缝交互:
- Python 暴露 API 给 JS:通过
js_api参数传递 Python 对象/类,JS 可通过window.pywebview.api调用; - Python 调用 JS:用
window.evaluate_js()执行 JS 代码,获取返回值; - JS 回调 Python:支持异步调用(如
async/await),适合复杂交互。
(3)轻量与原生体验
- 不捆绑浏览器,启动速度快;
- 窗口样式(标题栏、边框、图标)遵循系统规范;
- 支持系统级特性(如菜单、拖放、打印)。
(4)现代 Web 支持
兼容 HTML5、CSS3、ES6+,可集成 Vue/React/Angular 等前端框架,或用 QML 风格的 Web 组件。
3. 基础使用示例
(1)最简示例:加载网页/本地 HTML
import webview
# 创建窗口,加载远程 URL 或本地 HTML 文件(file:// 开头)
window = webview.create_window(
title='PyWebView Demo',
url='https://pywebview.flowrl.com/',
# url='file:///path/to/local.html',
width=800,
height=600,
resizable=True
)
# 启动应用(阻塞式,直到窗口关闭)
webview.start()


