【开源】Gooey:一行装饰器让你的 Python 命令行程序秒变 GUI 桌面应用

如果你用 Python 写过命令行工具,想给非技术用户使用时,Gooey 可能是最简单的解决方案——只需加一个装饰器,原有的 argparse 代码无需改动,即可自动生成美观的图形界面。

项目介绍

Gooey 是一个开源 Python 库,由 Chris Kiehl 开发,GitHub 获得超过 21,000 颗星。它的核心思想是用装饰器(Decorator)模式,将 argparse 的命令行参数声明自动转换为 wxPython 的 GUI 界面。用户无需学习任何 GUI 编程知识,原有的命令行程序加一行 @Gooey 即可拥有完整 GUI。

特色功能

  • 零改动集成:只需在原有 argparse 代码上加一个装饰器
  • 多语言支持:内置中、英、法、德、日等十几种语言
  • 高级/简洁模式:可切换显示高级配置选项
  • 实时进度显示:支持显示程序执行进度和时间消耗
  • 动态验证:支持对用户输入进行实时验证
  • 自定义布局:可自定义界面列数、标签文字等
  • 国际化:通过 JSON 文件可轻松添加新语言

安装步骤

# 通过 pip 安装
pip install Gooey

# 或从源码安装
git clone https://github.com/chriskiehl/Gooey.git
cd Gooey
python setup.py install

使用方法

最基础的使用只需在 main 函数上加一个装饰器:

from gooey import Gooey
from argparse import ArgumentParser

@Gooey  # 就是这么简单!
def main():
    parser = ArgumentParser(description="我的工具")
    parser.add_argument('--input', dest='input', help='输入文件')
    parser.add_argument('--output', dest='output', help='输出文件')
    parser.add_argument('--verbose', action='store_true', help='详细输出')
    args = parser.parse_args()
    # 你的业务逻辑
    print(f"处理 {args.input} -> {args.output}")

if __name__ == "__main__":
    main()

进阶配置示例:

@Gooey(
    program_name="文件处理器",
    language="chinese",
    advanced=True,
    default_size=(800, 600),
    required_cols=2,
    optional_cols=2,
    auto_start=True
)
def main():
    # ... argparse 代码保持不变
    pass

适用场景

  • 内部工具 GUI 化:将 Python CLI 工具快速转为可分发的桌面应用
  • 数据分析脚本:让非技术人员也能使用数据分析脚本
  • 运维工具:快速制作带界面的运维小工具
  • 教学演示:展示 Python 程序能力时提供更好的用户体验

开源协议

Gooey 采用 MIT 开源许可证,完全免费,可商用。

项目地址:https://github.com/chriskiehl/Gooey


服务支持:如有兴趣不会搭建,可以联系微信:WRYD6166,开源项目搭建10-50元。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容