Python轮子:EasyGUI 快速图形界面开发

原文链接: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}")

运行结果:

d
输出目录: 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+种预置对话框
  • 跨平台兼容性良好
  • 轻量级无依赖

注意事项:

  • 界面样式不可深度定制
  • 不适合复杂交互场景
  • 多窗口应用需自行管理状态

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注