1. 准备Python开发环境
在Ubuntu上搞Python图形界面开发,先得把基础环境搭好。这步没什么悬念,几条命令就能搞定:

- 更新软件包列表并安装Python3及pip:
sudo apt update && sudo apt install python3 python3-pip - (可选)创建虚拟环境隔离项目依赖:
sudo apt install python3-venv && python3 -m venv venv && source venv/bin/activate - 安装Python开发工具(编译部分库时需要):
sudo apt install python3-dev
2. 选择合适的GUI库
不同的场景适合不同的库,下面这几个是Ubuntu上比较常用的选项,各有各的脾气:
- Tkinter:Python标准库自带,零安装成本,适合快速原型开发。但界面风格偏传统,想要现代感的话得花点心思。
- PyQt5/PyQt6:基于Qt框架,界面漂亮、功能强大,支持复杂布局和跨平台。专业桌面应用的首选,不过学习曲线确实有点陡。
- Kivy:开源跨平台库,支持多点触控,移动端和桌面端都能用。但性能比原生应用稍弱一些。
- wxPython:基于wxWidgets,界面长得和本地应用很像,适合需要原生外观的程序。社区活跃,文档齐全。
- PyGObject(GTK+):Ubuntu默认桌面环境GNOME的原生绑定,深度集成系统应用时风格统一,没毛病。
3. 安装目标GUI库
选好库之后,安装命令也不复杂,按需执行就行:
- Tkinter:通常随Python安装,若未安装则运行:
sudo apt install python3-tk - PyQt5:
pip install PyQt5或通过系统包管理器:sudo apt install python3-pyqt5 - PyQt6:
pip install PyQt6 - Kivy:
pip install kivy[base] - wxPython:
pip install wxPython或系统包管理器:sudo apt install python3-wxgtk4.0 - PyGObject(GTK+):
sudo apt install python3-gi gir1.2-gtk-3.0
4. 快速入门示例
光说不练假把式,这里用Tkinter(标准库)和PyQt6(功能强大)各写一个示例,看看基本流程长什么样。
① Tkinter示例(简单窗口+按钮交互)
import tkinter as tk
from tkinter import messagebox
class SimpleTkinterApp:
def __init__(self, master):
self.master = master
master.title("Tkinter示例")
# 添加标签
label = tk.Label(master, text="请输入你的名字:")
label.pack(pady=10)
# 添加输入框
self.entry = tk.Entry(master, width=30)
self.entry.pack(pady=5)
# 添加按钮
button = tk.Button(master, text="打招呼", command=self.show_greeting)
button.pack(pady=10)
def show_greeting(self):
name = self.entry.get().strip()
if name:
messagebox.showinfo("欢迎", f"你好,{name}!")
else:
messagebox.showwarning("警告", "请输入名字!")
# 创建主窗口并运行
root = tk.Tk()
app = SimpleTkinterApp(root)
root.geometry("300x150")
root.mainloop()
② PyQt6示例(使用Qt Designer设计界面)
PyQt6的工作流稍微复杂一点,但效率更高,尤其适合界面复杂的项目。
- 步骤1:安装Qt Designer(Ubuntu自带):
sudo apt install qttools5-dev-tools - 步骤2:设计界面(打开终端运行
designer,拖拽按钮等控件,保存为mainwindow.ui) - 步骤3:转换.ui文件为Python代码:
pyuic6 mainwindow.ui -o ui_mainwindow.py - 步骤4:编写主程序:
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QMessageBox
from ui_mainwindow import Ui_MainWindow # 导入生成的UI类
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self) # 初始化UI
self.pushButton.clicked.connect(self.on_button_click) # 绑定按钮点击事件
def on_button_click(self):
self.statusbar.showMessage("按钮被点击了!", 3000) # 状态栏显示消息(3秒)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
5. 进阶技巧
基础入门之后,有几个实操中的关键点值得留意:
- 布局管理:尽量避免绝对定位(像Tkinter的
place或PyQt的setGeometry),优先使用pack(简单布局)、grid(网格布局)或QVBoxLayout/QHBoxLayout(垂直/水平布局)。这样界面在不同分辨率下不会崩。 - 事件处理:通过
command(Tkinter)或connect(PyQt)绑定控件事件(按钮点击、输入框内容变化等),实现交互逻辑。注意回调函数别忘了参数。 - 资源管理:用
pyuic6转换的.ui文件需要和主程序放在同一目录,或者通过路径调整引用。复杂项目可以用qrc文件管理图标、图片等资源,通过pyrcc6转换为Python代码。 - 打包发布:使用
PyInstaller将程序打包为可执行文件(.deb或.AppImage),方便分发。命令示例:pip install pyinstaller && pyinstaller --onefile --windowed your_script.py。注意打包时可能需要额外指定数据文件路径。