笔记 | Python环境下的GUI编程常用包
前言
Python的使用频率和范围越来越大,在一些开发工作中由于需要可视化的图形界面,常常需要进行图形用户界面(Graphic User Interface, GUI)开发。例如,目前最火热的大模型应用,常常是以一个网页界面进行操作和展示,从而免去了控制台或接口操作的复杂性。因此本文总结记录了我接触了解过的GUI开发相关工具和依赖库。
本文将Python开发中的GUI分为了原生GUI和Web GUI两大类,前者指的是以Windows或Android系统程序窗口的形式展示的界面,其界面风格受具体系统影响;后者是基于Web技术展示的网页界面,具有跨平台一致性的好处。此外为了原生GUI能够方便地移植到其他用户的系统进行使用,本文还简单介绍了可执行程序打包工具。
目录
原生GUI
Tkinter
Python中自带的免费开源GUI框架,无需额外安装即可使用。上手容易,使用简单,教程文档众多。具备可视化界面设计器 1。有较多的主题和美化资源。

wxPython 2
免费开源GUI框架,需额外安装使用。具备可视化界面设计器3 4。上手难度适中。


5
PyQT6
个人与商业双重许可的跨平台GUI框架,需额外安装使用。具备官方可视化界面设计器7。上手难度较高,功能也相对强大。

PySimpleGUI 8


Kivy 9
支持Windows, Linux, MacOS, Android和iOS的跨平台免费开源GUI框架,需额外安装使用。


Web UI
Streamlit 10
非常热门的Python Web UI框架,有非常多组件,具备对Dataframe的可视化支持,针对机器学习应用做了很多优化,社区活跃,界面简约美观,支持云部署。


Gradio 11
与Streamlit相似的非Python Web UI框架,同样非常适合机器学习应用。界面是简约的Hugging Face Style。


NiceGUI 12
相对Streamlit等更简单容易上手,界面非常简约。


可执行程序打包
Pyinstaller 13
免费开源的支持Windows, Linux和MacOS系统的应用程序打包工具,操作简单,应用广泛。
Nuitka 14
个人免费商用付费的跨平台应用程序打包工具,应用程序编译为C文件,代码效率与安全性有提升。
Reference
- https://github.com/ParthJadhav/Tkinter-Designer ↩
- https://wxpython.org/index.html ↩
- https://github.com/wxFormBuilder/wxFormBuilder ↩
- https://wxglade.sourceforge.net/ ↩
- https://www.yiibai.com/wxpython/wx_gridbagsizer.html ↩
- https://doc.qt.io/ ↩
- https://doc.qt.io/qtdesignstudio/studio-getting-started.html ↩
- https://www.pysimplegui.com/ ↩
- https://kivy.org/ ↩
- https://streamlit.io/ ↩
- https://www.gradio.app/ ↩
- https://nicegui.io/ ↩
- https://pyinstaller.org/ ↩
- https://nuitka.net/ ↩