在 Ubuntu 上用 Python 做图形界面,真正容易卡住的往往不是代码本身,而是环境没理顺、库没选对,结果第一个窗口迟迟跑不起来。下面按“先装什么、先学哪个库、示例怎么运行、后续怎么提效”的顺序展开,适合想从零做一个桌面小工具,或者准备比较几套 GUI 方案再开工的读者。
先把 Ubuntu 下的 Python 环境准备好
开始写界面前,先把基础开发环境整理干净。至少要确认 Python 3、pip 以及虚拟环境工具可用,这样后面安装 GUI 库和管理依赖时会省很多事。
基础安装命令
打开终端后,先执行下面几条命令:
sudo apt update
sudo apt install python3 python3-pip
sudo apt install python3-venv
这三步分别用于:
- 更新软件包列表:
sudo apt update - 安装 Python 3 和 pip:
sudo apt install python3 python3-pip - 安装虚拟环境工具:
sudo apt install python3-venv
安装完成后怎么验证
安装结束后,可以直接检查版本信息:
python3 --version
pip3 --version
只要终端能正常输出版本号,说明当前系统已经具备继续安装和运行 GUI 项目的基础条件。
Python GUI 库怎么选
Ubuntu 下可选的 Python GUI 库不少,但入门时没必要一口气全学。更实用的做法,是先根据项目复杂度和界面风格把范围缩小。

Tkinter:最省门槛的起点
Tkinter 是 Python 自带标准库,不需要额外安装,适合做基础窗口、小工具、简单配置面板一类应用。它的优势是上手快、资料多,适合第一次接触桌面界面开发的读者。
PyQt / PySide:复杂桌面应用优先考虑
PyQt / PySide 基于 Qt 框架,控件更丰富,也有成熟的可视化设计工具,适合企业级桌面程序、多媒体工具或者交互较复杂的项目。如果你后面需要更完整的布局、信号槽机制和更专业的桌面体验,Qt 系方案通常更稳。
Kivy:跨平台和触控场景更合适
Kivy 更偏跨平台,支持移动端,也适合多点触控应用,比如手机 App 或轻量小游戏。如果目标不仅是 Ubuntu 桌面,而是后续还考虑触屏设备,这类框架会更贴近需求。
customtkinter:想快速做出更现代的界面
customtkinter 可以理解为在 Tkinter 基础上做了更现代的 UI 封装,像圆角按钮、滑动条、深色主题这些常见元素都更容易直接用起来。它适合不想一开始就切到 Qt、但又觉得原生 Tkinter 外观太朴素的场景。
三个入门示例:把第一个窗口真正跑起来
下面这三个示例分别对应不同路线。代码都尽量保持原样,方便你直接复制运行,先感受事件绑定、布局和窗口主循环这些 GUI 开发最基础的概念。

Tkinter 示例:标准库直接运行
Tkinter 不需要额外安装,直接导入即可。下面这个例子包含标签、输入框和按钮,是非常典型的入门结构:
import tkinter as tk
def on_click():
label.config(text=f"Hello, {entry.get()}!")
# 创建主窗口
root = tk.Tk()
root.title("Tkinter入门示例")
root.geometry("300x200") # 设置窗口大小
# 添加组件
label = tk.Label(root, text="请输入你的名字:")
label.pack(pady=10) # pady为垂直间距
entry = tk.Entry(root, width=20) # 输入框
entry.pack(pady=5)
button = tk.Button(root, text="打招呼", command=on_click)
button.pack(pady=10)
# 运行主循环(保持窗口显示)
root.mainloop()
运行后会弹出一个窗口。输入名字并点击按钮,标签内容会更新成问候语。这个过程已经覆盖了 GUI 开发里的几个核心动作:创建窗口、添加控件、绑定事件和启动主循环。
PyQt5 示例:先安装再运行
PyQt5 需要先安装:
pip3 install PyQt5
安装完成后,可以运行下面这个简单窗口示例:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout
def on_click():
label.setText("按钮被点击了!")
# 创建应用实例
app = QApplication(sys.argv)
# 创建主窗口
window = QWidget()
window.setWindowTitle("PyQt5入门示例")
window.setGeometry(100, 100, 300, 200) # (x, y, width, height)
# 布局管理(垂直布局)
layout = QVBoxLayout()
# 添加组件
label = QLabel("欢迎使用PyQt5!")
layout.addWidget(label)
button = QPushButton("点击我")
button.clicked.connect(on_click) # 绑定点击事件
layout.addWidget(button)
# 设置布局
window.setLayout(layout)
# 显示窗口并进入主循环
window.show()
sys.exit(app.exec_())
这个例子比 Tkinter 更清楚地展示了布局管理和事件连接方式。点击按钮后,标签文字会更新,适合用来理解 Qt 的基本交互模型。
customtkinter 示例:更现代的登录界面
如果你更在意默认界面的观感,可以先安装 customtkinter:
pip3 install customtkinter
下面是一个现代风格的登录窗口:
import customtkinter as ctk
def login():
print("登录成功!")
# 设置主题(可选:light/dark/system)
ctk.set_appearance_mode("dark")
ctk.set_default_color_theme("blue")
# 创建主窗口
root = ctk.CTk()
root.title("现代登录界面")
root.geometry("400x300")
# 添加组件
frame = ctk.CTkFrame(root, corner_radius=10)
frame.pack(pady=20, padx=20, fill="both", expand=True)
ctk.CTkLabel(frame, text="用户登录", font=("Arial", 20)).pack(pady=10)
ctk.CTkEntry(frame, placeholder_text="用户名").pack(pady=5)
ctk.CTkEntry(frame, placeholder_text="密码", show="*").pack(pady=5)
ctk.CTkButton(frame, text="登录", command=login).pack(pady=10)
ctk.CTkCheckBox(frame, text="记住密码").pack(pady=5)
root.mainloop()
运行后是一个深色主题界面,整体观感会比原生 Tkinter 更现代。对很多内部工具、小型客户端来说,这类方案已经能兼顾开发速度和基本视觉效果。
提升效率:开发工具和打包方案
当你能把第一个窗口跑起来之后,下一步通常是两件事:写代码更顺手,以及把程序交付给别人使用。

常用 IDE 与编辑器
- PyCharm:适合把 Python GUI 项目当成长期开发任务来做,代码补全、调试、项目管理都比较完整。文中提到,社区版免费,解压后运行
bin/pycharm.sh即可启动。 - Visual Studio Code:更轻量,安装 Python 扩展如“Python”“Pylance”后,语法高亮和代码提示基本够用,适合喜欢自由配置编辑器的用户。
PyInstaller 打包命令
如果要把 Python 脚本分发给没有 Python 环境的用户,可以使用 PyInstaller。安装和打包命令如下:
pip3 install pyinstaller
pyinstaller --onefile your_script.py
打包完成后,可执行文件会生成在 dist 目录下。原文提到可用于生成 .exe/.deb 等分发形式,适合后续交付和测试。
后续学习资源怎么用
如果你已经完成环境配置,并顺利跑通一个示例,接下来最值得做的不是继续堆更多库,而是围绕自己选定的那一套路线往下深入。
- 官方文档:Python 官方《Tkinter tutorial》、PyQt 官方文档(doc.qt.io)、Kivy 官方文档(kivy.org/doc)。
- 在线教程:菜鸟教程的 Python GUI 部分、Real Python 的 PyQt 系列文章、Kivy 官方教程。
- 书籍:《Python编程:从入门到实践》中的 Tkinter 章节、《PyQt5从入门到实践》以及《Kivy Cookbook》都可以作为进阶材料。
比较实际的学习路径是:先用 Tkinter 或 customtkinter 做出一个能用的小工具,确认自己已经理解窗口、控件、事件和布局;如果项目逐渐变复杂,再考虑迁移到 PyQt / PySide 这类更完整的框架。
入门时最值得记住的判断
如果你的目标是在 Ubuntu 上尽快做出一个能用的桌面小程序,先装好 python3、python3-pip 和 python3-venv,然后从 Tkinter 或 customtkinter 入手,通常是最省时间的路径。只有当项目对复杂交互、专业控件和后续扩展有更高要求时,再把重心放到 PyQt / PySide,会更符合实际开发节奏。









