Ubuntu上Python GUI框架选择指南
一、快速决策建议
二、主流框架对比
| 框架 | 学习难度 | 外观与定制 | 跨平台 | 许可与商用 | 典型场景 |
|---|---|---|---|---|---|
| Tkinter | 低 | 默认风格偏旧,可用主题改善 | Windows/macOS/Linux | Python 协议,开源免费 | 小工具、教学、原型 |
| PyQt5 / PySide2 | 中-高 | 现代化,支持 Qt 样式/CSS | 全平台 | GPLv3(闭源商用需商业许可);PySide2 MIT | 企业级、复杂桌面应用 |
| wxPython | 中 | 原生外观,贴近系统风格 | 全平台 | 开源免费 | 追求原生体验的中型应用 |
| Kivy | 中 | 自定义风格,触控优先 | Linux/Windows/macOS/Android/iOS | 开源免费 | 触控应用、移动+桌面跨端 |
| PyGObject(GTK+ 3) | 中 | 贴近 GNOME/GTK 生态 | Linux/Windows/macOS | LGPL | 偏 GNOME/Ubuntu 原生风格应用 |
三、Ubuntu快速上手示例
Tkinter(通常随 Python 自带,如缺失可安装 python3-tk)
sudo apt update && sudo apt install python3-tk
python3 - <<‘PY’
import tkinter as tk
root = tk.Tk(); root.title(“Hello, Tkinter!”)
tk.Label(root, text=“Hello, World!”).pack()
root.mainloop()
PY
PyQt5
sudo apt update && sudo apt install python3-pyqt5
python3 - <<‘PY’
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
app = QApplication([])
w = QWidget(); w.setWindowTitle(“Hello, PyQt5!”)
QLabel(“Hello, World!”, w).move(80, 80)
w.show(); app.exec_()
PY
Kivy
sudo apt update && sudo apt install python3-kivy
python3 - <<‘PY’
from kivy.app import App
from kivy.uix.label import Label
class MyApp(App):
def build(self): return Label(text=“Hello, Kivy!”)
MyApp().run()
PY
wxPython
sudo apt update && sudo apt install python3-wxgtk4.0
python3 - <<‘PY’
import wx
app = wx.App(False)
f = wx.Frame(None, title=“Hello, wxPython”)
wx.StaticText(f, label=“Hello, World!”, pos=(50,50))
f.Show(); app.MainLoop()
PY
PyGObject(GTK+ 3)
sudo apt update && sudo apt install python3-gi gir1.2-gtk-3.0
python3 - <<‘PY’
import gi; gi.require_version(‘Gtk’, ‘3.0’)
from gi.repository import Gtk
w = Gtk.Window(title=“Hello, GTK+”); w.set_default_size(200,100)
w.add(Gtk.Label(label=“Hello, World!”)); w.connect(“destroy”, Gtk.main_quit)
w.show_all(); Gtk.main()
PY
四、选择时的关键考量