Python逆天改命,3分钟做出高颜值GUI程序

你是不是也曾经这样? 想要给你的Python程序加个图形界面(GUI),然后想象着,哇,这样我就能把它分享给朋友们了,程序也不再是死板的黑白窗口,肯定超酷!

那么今天花姐就给大家安利一款超级简单的GUI库 - Gooey。它的特点是:只需一行即可将(几乎)任何Python 3控制台程序变成GUI应用程序。

Gooey是啥?

Gooey就像是Python开发者的"颜值担当"。你只需要写好程序的核心逻辑,再通过它的简单封装,就能把你的程序界面变得既漂亮又实用。更牛的是,它基于现有的代码,几乎零门槛就能实现图形化界面,超级适合那些对GUI没有经验,但又想提高自己作品"颜值"的程序员。

安装Gooey:像喝水一样简单

首先,咱们得先安装Gooey,话说这个安装过程,简直快到你都来不及反应。

在命令行中输入以下命令:

bash 复制代码
pip install gooey

安装完毕后,你就能开始构建自己的高颜值应用啦!是不是很简单?

一个实用的小例子:用Gooey做个文件选择器

接下来,我们来用Gooey做一个"文件选择器"的小程序。用过文件选择器的程序你肯定不少,像Windows的文件资源管理器、Mac的Finder,都是这种界面。那么,如何用Gooey做一个?快看下面的代码:

python 复制代码
from gooey import Gooey, GooeyParser

@Gooey(language='chinese')
def main():
    parser = GooeyParser(description="选择文件")
    parser.add_argument('filename', widget='FileChooser', help="选择一个文件")
    args = parser.parse_args()
    print(f"你选择的文件是:{args.filename}")

if __name__ == '__main__':
    main()

代码解释:

  1. @Gooey:这个装饰器将你的函数转变为一个图形界面程序,Gooey会自动生成UI界面。
  2. GooeyParser:这是一个Gooey的专用解析器,它是对标准argparse的封装,增加了图形化界面的支持。
  3. widget='FileChooser':这里我们指定了一个文件选择器,让用户可以通过图形界面选择文件,而不是在命令行中输入文件路径。

运行效果:

Gooey不止于此

现在,你可能觉得"这不过就是一个文件选择器嘛"------好吧,我承认这个示例有点简单。但!Gooey给你提供了丰富的自定义选项,你可以自由定义界面元素,让它更符合你的需求。

1. 将命令行程序转换为图形界面

Gooey 的最大特点就是能够将原本的命令行程序转换成图形界面。你只需要在原本的 argparse 代码基础上,添加 @Gooey 装饰器就可以了。

python 复制代码
from gooey import Gooey, GooeyParser

@Gooey(language='chinese')
def main():
    parser = GooeyParser(description="简单的 Gooey 程序")
    parser.add_argument('message', help="请输入一条信息")
    args = parser.parse_args()
    print(f"你输入的信息是:{args.message}")

if __name__ == '__main__':
    main()

2. 文本输入框(TextField)

python 复制代码
from gooey import Gooey, GooeyParser

@Gooey(language='chinese')
def main():
    parser = GooeyParser(description="文本输入框")
    # 文本输入框
    parser.add_argument('name', widget='TextField', help="请输入你的名字")
    
    args = parser.parse_args()
    print(f"名字:{args.name}")

if __name__ == '__main__':
    main()

3. 密码输入框(PasswordField)

python 复制代码
from gooey import Gooey, GooeyParser

@Gooey(language='chinese')
def main():
    parser = GooeyParser(description="密码输入框")
    # 文本输入框
    parser.add_argument('pwd', widget='PasswordField', help="请输入你的密码")
    
    args = parser.parse_args()
    print(f"密码:{args.pwd}")

if __name__ == '__main__':
    main()

4. 下拉选项(Dropdown)

python 复制代码
from gooey import Gooey, GooeyParser

@Gooey(language='chinese')
def main():
    # 创建GooeyParser对象
    parser = GooeyParser(description="下拉选项 示例")

    # 添加下拉选项
    parser.add_argument('fruit', type=str, 
    choices=['苹果', '香蕉', '橙子', '葡萄'],  
    help='请选择你喜欢的水果', 
    widget='Dropdown')

    args = parser.parse_args()
    print(f"你选择的水果是:{args.fruit} ")

if __name__ == '__main__':
    main()

5. 数值选择控件(IntegerField、DecimalField)

python 复制代码
from gooey import Gooey, GooeyParser

@Gooey(language='chinese')
def main():
    parser = GooeyParser(description="数值选择示例")
    parser.add_argument('age', type=int, widget='IntegerField', help="请输入年龄")
    parser.add_argument('price', type=float, widget='DecimalField', help="请输入价格")
    args = parser.parse_args()
    print(f"年龄:{args.age}, 价格:{args.price}")

if __name__ == '__main__':
    main()

提示: IntegerField、DecimalField在设置参数为必填项时,用户输入内容以后依然会提示:this field is required,可能是Gooey库的bug吧,暂时的解决方案就是把age和price这2个参数改成--age和--price,这样age和price就改成了非必填项了,然后手动判断下age和price是否有输入。


6. 选择日期/时间控件(DateChooser/TimeChooser)

Gooey 还支持日期选择控件,帮助用户选择日期。

python 复制代码
from gooey import Gooey, GooeyParser

@Gooey(language='chinese')
def main():
    parser = GooeyParser(description="日期选择示例")
    parser.add_argument('date', widget='DatePicker', help="请选择日期")
    args = parser.parse_args()
    print(f"选择的日期是:{args.date}")

if __name__ == '__main__':
    main()

7. 自定义界面主题和样式

Gooey 提供了一些可定制的主题和样式,帮助你让界面更加符合需求。

python 复制代码
from gooey import Gooey, GooeyParser

@Gooey(program_name="自定义主题示例", default_size=(600, 400))
def main():
    parser = GooeyParser(description="自定义界面")
    parser.add_argument('message', help="输入消息")
    args = parser.parse_args()
    print(f"输入的消息是:{args.message}")

if __name__ == '__main__':
    main()

总结

好了,经过这篇文章,你应该对Gooey有了个初步的了解。是不是觉得它真的挺简单且好用的?其实很多Python开发者都有过在命令行和图形界面之间纠结的痛苦,而Gooey恰好帮我们解决了这一问题------它既让程序有了"颜值",又保留了Python开发的简洁性。

当然了,Gooey也有它的一些局限性,比如它的界面定制性可能不如PyQt那样强大,但对于大多数简单的GUI需求,它都能胜任。你可以在项目中根据需要选择合适的工具,完全不必担心过于复杂的学习曲线。

相关推荐
zhanghongyi_cpp4 分钟前
3. 列表元素替换
python
紧跟先前的步伐4 分钟前
【Golang】第十一弹------反射
开发语言·后端·golang
蓝白咖啡8 分钟前
华为OD机试 - 王者荣耀匹配机制 - 回溯(Java 2024 D卷 200分)
java·python·算法·华为od·机试
Code_Geo17 分钟前
pyproj 库中 Geod 类讲解
开发语言·python·geod·pyproj
钢铁男儿29 分钟前
Python 序列构成的数组(对序列使用+和_)
服务器·windows·python
三木SanMu30 分钟前
LangChain基础系列之LLM接口详解:从原理到实战的全攻略
后端
失业写写八股文32 分钟前
Spring基础:Spring特性与优势
后端·spring
豆芽81936 分钟前
基于Web的交互式智能成绩管理系统设计
前端·python·信息可视化·数据分析·交互·web·数据可视化
Asthenia041237 分钟前
Java 排序深度解析:升序、降序与实现方式的抉择
后端
不爱吃鱼的猫-38 分钟前
Pyside6 信号与槽
python·个人开发·pyside6