Python GUI 编程入门:告别命令行,用 easygui 打造你的第一个图形界面
你是否厌倦了 Python 程序只能在黑乎乎的命令行窗口里运行?你是否想为你的脚本或小工具添加一个简单的图形界面,但又不想陷入复杂如 Tkinter、PyQt 的深潭?

如果你的答案是“是”,easygui 就是你的救星!它是一个极简的 Python GUI 库,能让你用最少的代码,快速创建出功能齐全的对话框和窗口,就让我们一起揭开 easygui 的神秘面纱。
什么是 easygui?
easygui 的设计哲学就是“简单”,它将 GUI 编程中常见的元素——如消息框、输入框、选择框等——封装成一个个简单的函数调用,你不需要关心窗口如何布局、按钮如何放置,只需调用函数,easygui 就会为你弹出一个漂亮的对话框并处理用户输入。
它的核心优势在于:
- 极简主义:几行代码就能搞定一个界面。
- 零学习成本:函数名直观易懂,一看就知道是做什么的。
- 专注逻辑:让你专注于程序的核心逻辑,而不是 GUI 的细节。
- 跨平台:在 Windows, macOS, Linux 上都能完美运行。
安装与入门
你需要安装 easygui,打开你的终端或命令提示符,运行以下命令:

pip install easygui
安装完成后,我们来写第一个“Hello, World!”程序,在 Python 中,这不再是一句打印,而是一个弹出的对话框。
import easygui
# 弹出一个简单的消息框
easygui.msgbox("你好,欢迎使用 easygui!", title="欢迎")
运行这段代码,你会看到一个对话框弹出,上面显示着“你好,欢迎使用 easygui!”,恭喜你,你已经迈出了 GUI 编程的第一步!
常用对话框详解
easygui 提供了丰富的对话框类型,足以应对绝大多数简单场景。
消息框 - msgbox()
这是我们刚才用到的,用于显示信息。
easygui.msgbox("操作成功完成!", title="提示", ok_button="确定")
msg: 要显示的消息。: 对话框的标题。ok_button: “确定”按钮上显示的文本。
输入框 - enterbox()
需要用户输入单行文本时使用。
name = easygui.enterbox("请输入你的名字:", title="用户信息")
if name: # 检查用户是否输入了内容
print(f"你好, {name}!")
else:
print("你没有输入名字。")
它会返回用户输入的字符串,如果用户点击“取消”或直接关闭窗口,则返回 None。
整数输入框 - integerbox()
专门用于输入整数,可以指定输入范围。
age = easygui.integerbox("请输入你的年龄 (1-120):", title="年龄", lowerbound=1, upperbound=120)
if age:
print(f"你的年龄是: {age} 岁")
如果用户输入的不是整数或超出范围,easygui 会自动提示。
选择框 - choicebox()
让用户从一个列表中进行单项选择。
choices = ["苹果", "香蕉", "橙子", "葡萄"]
fruit = easygui.choicebox("请选择你喜欢的水果:", title="水果选择", choices=choices)
if fruit:
print(f"你选择了: {fruit}")
多选框 - multchoicebox()
让用户从一个列表中进行多项选择。
choices = ["跑步", "游泳", "阅读", "看电影", "打游戏"]
hobbies = easygui.multchoicebox("请选择你的爱好:", title="爱好选择", choices=choices)
if hobbies:
print(f"你的爱好是: {', '.join(hobbies)}")
是/否/取消框 - ccbox() & ynbox()
简单的二选一或三选一对话框。
# ynbox() 只有 "Yes" 和 "No"
if easygui.ynbox("你今天过得好吗?", title="问候", choices=("Yes", "No")):
print("太好了!")
else:
print="希望明天会更好。"
# ccbox() 有 "Continue" 和 "Cancel"
if easygui.ccbox("是否继续执行下一步?", title="确认"):
print("继续执行...")
else:
print("操作已取消。")
实战案例:一个简单的文件选择器
让我们用 easygui 来做一个实用的例子:一个文件选择器,它可以读取用户选择的文本文件,并显示其内容。
import easygui
# 1. 让用户选择一个文件
file_path = easygui.fileopenbox("请选择一个文本文件:", title="文件选择")
# 2. 检查用户是否选择了文件
if file_path:
try:
# 3. 读取并显示文件内容
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
# 4. 使用一个文本框显示内容,并提供一个大的文本区域
easygui.textbox("文件内容如下:", title=f"文件: {file_path}", text=content)
except Exception as e:
easygui.msgbox(f"读取文件时出错: {e}", title="错误")
else:
easygui.msgbox("你没有选择任何文件。", title="提示")
代码解析:
fileopenbox(): 弹出一个标准的文件选择对话框,返回用户选择的完整文件路径。if file_path:: 这是一个好习惯,检查用户是否真的选择了文件(而不是点击了取消)。with open(...): 安全地打开和读取文件内容。textbox(): 这是一个非常强大的对话框,它提供了一个带滚动条的文本区域来显示大量文本,非常适合显示文件内容。
easygui 的局限性
easygui 并非万能,它的“简单”也意味着它有一定的局限性:
- 无法自定义布局:你不能精确控制窗口内各个组件的位置和大小,所有组件都是垂直排列的。
- 功能单一:它只提供对话框,无法创建主窗口、菜单栏、工具栏等复杂的界面元素。
- 样式固定:对话框的样式比较传统,无法进行现代化的美化。
easygui 最适合的场景是:
- 快速原型开发:快速验证一个想法,而不用花时间在界面上。
- 脚本工具:为你的命令行脚本增加一个简单的交互界面,提升用户体验。
- 教学入门:作为 GUI 编程的入门工具,让初学者快速获得成就感。
easygui 就像是 GUI 编程界的“瑞士军刀”,它小巧、轻便、功能明确,虽然不能干大工程,但在解决小问题时,它无与伦比的便捷性让它脱颖而出。
如果你正在寻找一种方法,让你的 Python 脚本告别单调的命令行,或者想以最低的成本为你的程序增加一个“脸面”,那么请毫不犹豫地试试 easygui,它会让你发现,创建图形界面原来可以如此简单!
下一步: 当你熟悉了 easygui 之后,如果需要更强大的功能,不妨去探索一下 Python 内置的 Tkinter 库,或者功能更全面的 PyQt / PySide 框架,但在此之前,尽情享受 easygui 带来的乐趣吧!
