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 引擎
    WindowsEdge WebView2
    macOSWebKit(Safari 内核)
    LinuxGTK + WebKit 或 Qt WebEngine
    AndroidAndroid 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 对比

    对比维度PywebviewElectron
    应用体积极小(不捆绑浏览器内核)庞大(捆绑完整 Chromium)
    启动速度极快较慢
    内存占用极低较高
    原生外观遵循系统规范需额外定制
    WebView 版本依赖系统(旧系统可能受限)固定版本,兼容性好
    高级特性需手动适配开箱即用
    开发语言PythonJavaScript / TypeScript

    五、打包分发

    Pywebview 可与 PyInstaller、Nuitka、py2app 等工具集成,生成独立可执行文件,方便分发部署。

    六、版本状态

    项目信息
    当前最新版本6.2.1(2026 年 7 月更新)
    GitHub 最后提交2026 年 5 月
    许可证BSD-3-Clause
    维护状态持续维护中

    说明:
          • 以上信息整理自 Pywebview 官方文档及公开资料,数据截至 2026 年 8 月。
          • 官方文档地址:https://pywebview.flowrl.com
          • 具体功能和使用方法以官方最新文档为准。