原文链接:http://www.juzicode.com/python-module-easygui
EasyGUI是Python的简单GUI库,提供预构建对话框组件,无需复杂布局设计,适用于快速创建文件选择、消息提示等交互界面,特别适合命令行工具的可视化增强。
应用场景
- 快速原型开发
- 脚本工具交互界面
- 教学演示程序
- 数据录入系统
- 文件选择对话框
- 简单配置界面
安装与导入
# juzicode.com/VX公众号:juzicode
pip install easygui
import easygui as eg
使用方法
1. 消息提示框
创建基础消息提示窗口,设置标题和提示内容。msgbox返回被点击按钮的文本,可用于流程控制。
# juzicode.com/VX公众号:juzicode
import easygui as eg
response = eg.msgbox("文件保存成功!", title="系统提示", ok_button="确定")
print(f"用户操作: {response}")

运行结果(按下确定按钮):
用户操作: 确定
运行结果(直接关闭窗口):
用户操作: None
2. 选项选择对话框
创建多选项按钮对话框,choices参数接收选项列表。indexbox返回选中项的索引值,适用于分支选择场景。
# juzicode.com/VX公众号:juzicode
import easygui as eg
options = ["新建项目", "打开项目", "退出系统"]
choice = eg.indexbox("请选择操作:", choices=options)
print('choice:',choice)
print(f"选中操作: {options[choice] if choice is not None else '取消'}")
运行结果:

E:\juzicode>python test-easygui2.py
choice: 2
选中操作: 退出系统
E:\juzicode>python test-easygui2.py
choice: 1
选中操作: 打开项目
E:\juzicode>python test-easygui2.py
choice: 0
选中操作: 新建项目
3. 文件选择对话框
使用fileopenbox实现文件选择功能,filetypes参数过滤指定扩展名文件。返回完整文件路径或None(用户取消时)。
# juzicode.com/VX公众号:juzicode
import easygui as eg
path = eg.fileopenbox(
msg="选择数据文件",
title="文件选择器",
default="*.csv",
filetypes=["*.csv", "*.xlsx"]
)
print(f"选中文件: {path if path else '未选择'}")
运行结果:

选中文件: E:\juzicode\juzicode.csv
4. 多字段输入表单
multenterbox创建多行输入表单,fields定义字段标签。返回包含各字段值的列表,可设置初始值。
# juzicode.com/VX公众号:juzicode
import easygui as eg
fields = ["用户名", "密码", "邮箱"]
values = eg.multenterbox("注册新用户", "用户注册", fields)
print(f"输入结果: {values}")
运行结果:

输入结果: ['juzicode', '********', 'contact@juzicode.com']
5. 异常处理机制
捕获用户关闭窗口的异常,防止程序意外退出。当用户点击X按钮时返回None。
# juzicode.com/VX公众号:juzicode
import easygui as eg
try:
choice = eg.buttonbox("确认删除?", choices=["确认", "取消"])
except eg.EasyGuiCancelError:
print("用户取消操作")
else:
print(f"删除操作: {choice}")
运行结果:
用户取消操作
6. 密码输入框
使用passwordbox隐藏敏感输入,show参数控制显示方式。返回明文密码字符串。
# juzicode.com/VX公众号:juzicode
import easygui as eg
pwd = eg.passwordbox("输入管理员密码:", "", mask='*')
print(f"密码长度: {len(pwd) if pwd else 0}")
运行结果:

密码长度: 5
7. 目录选择对话框
diropenbox实现目录选择功能,返回选中目录路径。default参数设置初始路径。
# juzicode.com/VX公众号:juzicode
import easygui as eg
folder = eg.diropenbox("选择输出目录", default="C:/")
print(f"输出目录: {folder}")
运行结果:

输出目录: E:\juzicode
8. 自定义界面样式
通过ccbox自定义按钮文本,实现非标准对话框。适用于需要个性化提示的场景。
# juzicode.com/VX公众号:juzicode
import easygui as eg
choice = eg.ccbox(
"发现新版本,是否立即更新?",
title="软件更新",
choices=("马上更新", "稍后再说")
)
print(f"更新选择: {'是' if choice else '否'}")
运行结果:

更新选择: 是
总结
EasyGUI为快速GUI开发提供便利:
- 零学习曲线,开箱即用
- 提供20+种预置对话框
- 跨平台兼容性良好
- 轻量级无依赖
注意事项:
- 界面样式不可深度定制
- 不适合复杂交互场景
- 多窗口应用需自行管理状态