背景
前段接了一个足球盘口监控的桌面程序开发,当时简单选用NiceGui开发的,其实Python生态中桌面开发用PyQt6、PySide6也是挺常见的,加之本人对Go生态的Wails也用过,所以后来分别用PyQt6和Wails对程序的功能进行重写了一遍,本文基于该程序功能对三者进行一些对比。
技术栈与生态
PyQt6 | NiceGui | Wails |
- 基于 Qt 6(C++ GUI 库),Python 的绑定
- 成熟度最高,生态庞大
- 适合纯桌面应用开发,跨平台能力强(Windows、Linux、macOS)
| - 基于 Python + Web 技术(FastAPI + Vue/Tailwind 渲染)
- 用 Python 写前端/后端一体,自动生成现代网页 UI。更像是 Web 应用开发框架,而不是传统桌面 GUI
- 适合快速构建管理后台、数据可视化面板、IoT 控制台
| - 基于 Go + Web 前端(默认 Vue/React/Svelte 之类)
- 类似 Electron,但没有 Chromium 内核,体积小、性能高。用Go写后端逻辑,Web技术写界面,可以使用的前端UI库多。
- 更适合 跨平台桌面应用,兼顾原生体验和现代前端 UI。
|
性能与体积
PyQt6 | NiceGui | Wails |
- 启动速度快,接近原生体验,内存占用小
- 运行时依赖 Qt 库,打包体积较大
| - 启动速度稍慢,性能一般
- 依赖Python运行环境,打包体积较大
| |
开发体验
PyQt6 | NiceGui | Wails |
- Gui控件丰富、借助Qt Designer 等工具绘制更简单
- 上手容易
- 对纯Python开发者更友好
| - 纯Python绘制界面(有前端经验的话,会更简单)、界面现代
- 入门简单
- 对纯Python开发者友好
| - 界面可以使用各种前端UI库、前端框架,界面现代化
- 不难,开发更灵活
- 需要前端技能和Golang技能
|
最后:以足球盘口监控程序为例进行对比
技术栈 | 打包体积 | 启动时间 | 运行内存占用 |
PyQt6 | 36.2M | 2.5秒 | 29.5M |
NiceGui | 37.4M | 7秒 | 184.8M |
Wails | 15.9M | 2.5秒 | 81.5M |
关于我
一位大小厂都待过的大龄全栈程序员、独立开发者,厌倦了职场的套路、内卷,目前居家承接项目、技术支持、开发自有独立产品,为实现自由生活奋斗中,欢迎大家点赞、转发、关注我。