丢弃Tkinter,这款GUI神器值得拥有
liuian 2025-06-13 14:47 27 浏览
作者:闲欢
来源:Python 技术
GUI是一个人机交互的界面,换句话说,它是人类与计算机交互的一种方法。GUI主要使用窗口,图标和菜单,也可以通过鼠标和键盘进行操作。
GUI库包含部件。部件是一系列图形控制元素的集合。在构建GUI程序时,通常使用层叠方式。众多图形控制元素直接叠加起来。
当使用python编写应用程序时,你就必须使用GUI库来完成。对于Python GUI库,你可以有很多的选择。
之前我用的最多的是 Tkinter ,这个 GUI 库比较灵活,可以做出比较复杂的界面。但是在页面布局和控件使用上比较复杂,想画出一个好看的界面还是要花很多功夫的。
今天给大家介绍一个 GUI 库 —— Gooey ,一行代码就可以快速生成 GUI 应用程序。
安装
安装方法毫无新意,跟以前我们安装其他库一样:
pip install Gooey
简单示例
from gooey import Gooey, GooeyParser
@Gooey(program_name="简单的实例")
def main():
parser = GooeyParser(description="第一个示例!")
parser.add_argument('文件路径', widget="FileChooser") # 文件选择框
parser.add_argument('日期', widget="DateChooser") # 日期选择框
args = parser.parse_args() # 接收界面传递的参数
print(args)
if __name__ == '__main__':
main()
这里看代码应该大致知道界面有些什么控件:文件选择框、日期选择框。
运行之后的效果如下:
非常的简洁大方有木有!绝对拿得出手!
组件
GUI 界面都是由一个个组件排列组成的,上面的例子中我们使用了 FileChooser 和 DateChooser 这两个组件,使用起来是不是很简单?我们来看看 Gooey 还有哪些组件。
| 控件名 | 控件类型 |
| -------- | -----: |
| FileChooser | 文件选择器 |
| MultiFileChooser | 文件多选器|
| DirChooser | 目录选择器 |
| MultiDirChooser | 目录多选器 |
| FileSaver | 文件保存 |
| DateChooser | 日期选择 |
| TextField | 文本输入框 |
| Dropdown | 下拉列表 |
| Counter | 计数器 |
| CheckBox | 复选框 |
| RadioGroup | 单选框 |
这些组件基本上看名称就知道是什么样子的了,都是我们平时常用的页面组件。
配置
配置参数主要是对Gooey界面做全局配置,配置方法如下:
@Gooey(program_name='全局配置Demo')
def main():
...
这里就使用了 program_name 这个配置,主要是配置显示程序的名称。
除此之外,Gooey 还有好多其他的配置参数:
参数类型简介advancedBoolean切换显示全部设置还是仅仅是简化版本show_configBoolean跳过所有配置并立即运行程序languagestr指定从 gooey/languages 目录读取哪个语言包program_namestrGUI 窗口显示的程序名。默认会显 sys.argv[0]。program_descriptionstrSettings 窗口顶栏显示的描述性文字。默认值从 ArgumentParser 中获取。default_sizetuple窗口默认大小,(600,400)required_colsint设置必选参数行数。optional_colsint设置可选参数行数。dump_build_configBoolean将设置以 JSON 格式保存在硬盘中以供编辑/重用。richtext_controlsBoolean打开/关闭控制台对终端控制序列的支持(对字体粗细和颜色的有限支持)
比如我们上面的例子中除了我们自己设置的,其他的控件例如选择按钮、确定按钮等默认都是英文的,我们可以通过 language 参数来设置语言。语言包在 Gooey 的 GitHub 源码中有:
我们使用语言配置:
from gooey import Gooey, GooeyParser
@Gooey(program_name="简单的实例", language='chinese')
def main():
parser = GooeyParser(description="第一个示例!")
parser.add_argument('文件路径', widget="FileChooser") # 文件选择框
parser.add_argument('日期', widget="DateChooser") # 日期选择框
args = parser.parse_args() # 接收界面传递的参数
print(args)
if __name__ == '__main__':
main()
这里加了一个 language 参数,我们看看运行后效果:
我们可以看到,界面上的文字都变成中文了。
结构布局
通过使用一些简单的自定义,您可以使用Gooey实现相当灵活的布局。我们可以通过Gooey装饰器的各种参数来控制总体布局选项。
- show_sidebar=True
- show_sidebar=False
- navigation='TABBED'
- tabbed_groups=True
实例
我们通过一个小栗子来看看运行的效果吧。
from gooey import Gooey, GooeyParser
@Gooey(
richtext_controls=True, # 打开终端对颜色支持
program_name="MQTT连接订阅小工具", # 程序名称
encoding="utf-8", # 设置编码格式,打包的时候遇到问题
progress_regex=r"^progress: (\d+)%#34; # 正则,用于模式化运行时进度信息
)
def main():
settings_msg = 'MQTT device activation information subscription'
parser = GooeyParser(description=settings_msg)
subs = parser.add_subparsers(help='commands', dest='command')
my_parser = subs.add_parser('MQTT消息订阅')
my_parser.add_argument("connect", metavar='运行环境',help="请选择开发环境",choices=['dev环境','staging环境'], default='dev环境')
my_parser.add_argument("device_type",metavar='设备类型',help="请选择设备类型",choices=['H1','H3'],default='H1')
my_parser.add_argument("serialNumber", metavar='设备SN号',default='LKVC19060047',help='多个请用逗号或空格隔开')
siege_parser = subs.add_parser('进度条控制')
siege_parser.add_argument('num',help='请输入数字',default=100)
args = parser.parse_args()
print(args, flush=True) # flush=True在打包的时候会用到
if __name__ == '__main__':
main()
这个例子运行的效果如下:
打包成应用程序
第一步,先安装我们的打包库:
pip install pyinstaller
第二步,执行打包命令:
pyinstaller -F gooeydemo.py -w
等待执行完成,我们就可以在代码目录下看到这样的结构:
我们的 exe 可执行文件就在 dist 文件夹下。
总结
今天给大家介绍了 Gooey 的一些简单使用,个人觉得比 Tkinter 要好用一些,应对一些简单的 GUI 界面,我们使用 Gooey 可以快速生成,而使用 Tkinter 的话,可能就需要耗费一些时间了。当然,Gooey 还有一些其他的特性,大家有兴趣可以去探索!
相关推荐
- 搭建一个20人的办公网络(适用于20多人的小型办公网络环境)
-
楼主有5台机上网,则需要一个8口路由器,组网方法如下:设备:1、8口路由器一台,其中8口为LAN(局域网)端口,一个WAN(广域网)端口,价格100--400元2、网线N米,这个你自己会看了:)...
- 笔记本电脑各种参数介绍(笔记本电脑各项参数新手普及知识)
-
1、CPU:这个主要取决于频率和二级缓存,频率越高、二级缓存越大,速度越快,现在的CPU有三级缓存、四级缓存等,都影响相应速度。2、内存:内存的存取速度取决于接口、颗粒数量多少与储存大小,一般来说,内...
- 汉字上面带拼音输入法下载(字上面带拼音的输入法是哪个)
-
使用手机上的拼音输入法打成汉字的方法如下:1.打开手机上的拼音输入法,在输入框中输入汉字的拼音,例如“nihao”。2.根据输入法提示的候选词,选择正确的汉字。例如,如果输入“nihao”,输...
- xpsp3安装版系统下载(windowsxpsp3安装教程)
-
xpsp3纯净版在采用微软封装部署技术的基础上,结合作者的实际工作经验,融合了许多实用的功能。它通过一键分区、一键装系统、自动装驱动、一键设定分辨率,一键填IP,一键Ghost备份(恢复)等一系列...
- 没有备份的手机数据怎么恢复
-
手机没有备份恢复数据方法如下1、使用数据线将手机与电脑连接好,在“我的电脑”中可以看到手机的盘符。 2、将手机开启USB调试模式。在手机设置中找到开发者选项,然后点击“开启USB调试模式”。 3、...
- 电脑怎么激活windows11专业版
-
win11专业版激活方法有多种,以下提供两种常用的激活方式:方法一:使用激活密钥激活。在win11桌面上右键点击“此电脑”,选择“属性”选项。进入属性页面后,点击“更改产品密钥或升级windows”。...
- 华为手机助手下载官网(华为手机助手app下载专区)
-
华为手机助手策略调整,已不支持从应用市场下载手机助手,目前华为手机助手是需要在电脑上下载或更新手机助手到最新版本,https://consumer.huawei.com/cn/support/his...
- 光纤线断了怎么接(宽带光纤线断了怎么接)
-
宽带光纤线断了可以重接,具体操作方法如下:1、光纤连接的时候要根据束管内,同色相连,同芯相连,按顺序进行连接,由大到小。一般有三种连接方法,分别是熔接、活动连接和机械连接。2、连接的时候要开剥光缆,抛...
- win7旗舰版和专业版区别(win7旗舰版跟专业版)
-
1、功能区别:Win7旗舰版比专业版多了三个功能,分别是Bitlocker、BitlockerToGo和多语言界面; 2、用途区别:旗舰版的功能是所有版本中最全最强大的,占用的系统资源,...
- 万能连接钥匙(万能wifi连接钥匙下载)
-
1、首先打开wifi万能钥匙软件,若手机没有开启WLAN,就根据软件提示打开WLAN开关;2、打开WLAN开关后,会显示附近的WiFi,如果知道密码,可点击相应WiFi后点击‘输入密码’连接;3、若不...
- 雨林木风音乐叫什么(雨林木风是啥)
-
雨林木风的创始人是陈年鑫先生。陈年鑫先生于1999年创立了雨林木风公司,其初衷是为满足中国市场对高品质、高性能电脑的需求。在陈年鑫先生的领导下,雨林木风以技术创新、产品质量和客户服务为核心价值,不断推...
- aics6序列号永久序列号(aics6破解序列号)
-
关于AICS6这个版本,虽然是比较久远的版本,但是在功能上也是十分全面和强大的,作为一名平面设计师的话,AICS6的现有的功能已经能够应付几乎所有的设计工作了……到底AICC2019的功能是不是...
- 手机可以装电脑系统吗(手机可以装电脑系统吗怎么装)
-
答题公式1:手机可以通过数据线或无线连接的方式给电脑装系统。手机安装系统需要一定的技巧和软件支持,一般需要通过数据线或无线连接的方式与电脑连接,并下载相应的软件和系统文件进行安装。对于大部分手机用户来...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
