Python 在运维和办公自动化中扮演着重要的角色,PySimpleGUI 是一款很棒的自动化辅助模块,让你更轻松的实作日常任务的自动化,
1 PySimpleGUI安装
在命令列/终端输入:pip install pysimplegui,等待安装完成后,进入python环境,输入import PySimpleGUI回车无误后,确认安装成功

2 PySimpleGUI制作简易弹窗界面
2.1 两种界面设计模式
很多人学习蟒蛇,不知道从何学起, 很多人学习python,掌握了基本语法之后,不知道在哪里寻找案例上手, 很多已经做了案例的人,却不知道如何去学习更多高深的知识, 那么针对这三类人,我给大家提供一个好的学习平台,免费获取视频教程,电子书,以及课程的源代码! QQ群:101677771 欢迎加入,一起讨论一起学习
(1) 单次显示界面(one-shot window)
- 类似于弹窗,出现一次
- 常用于提示信息,收集信息
(2)持续显示界面(Persistent window)
- 持续不断显示,除非用户手动关闭
- 常作为软件的主界面
2.2 制作弹窗
官网默认的库的缩写为sg,使用时建议保持统一,也是使用sg

弹窗型别:(第一种和第二种是一致的)
- sg.popup('注意!')
- sg.popup_ok('默认弹窗')
- sg.popup_yes_no('带Yes和No按钮的弹窗')
- sg.popup_cancel('带cancel按钮的弹窗')
- sg.popup_ok_cancel('带OK和cancel按钮的弹窗')
- sg.popup_error('带红色error按钮的弹窗')
- sg.popup_auto_close('几秒后自动关闭的弹窗')
最后一个执行后程序会在2s左右自动退出,除了以上的简单的默认函式外,还可以手动设定自变量,相关的自变量如下

比如设定一个定制化的小视窗,进行相关自变量的添加
sg.popup(
'这是弹窗',
title='Hello',
button_color=('#A81B0C', '#FFFFFF'),
background_color='#F47264',
line_width=2,
custom_text=' 好的 '
)
输出结果:(第一个自变量就是要显示的信息,可以是单个,也可多个字符串,多个字符串时候,默认换行,如果是单个字符串可以通过line_with指定每行的宽度)

当第一个自变量是多个字符串时,自动换行显示(由于自动的表单长宽很小,所以标题就没有看到,但不是代表不显示,下面的示例中就可以看到)

2.3 文字内容弹窗
采用popup_scrolled()方法,括号中添加要显示的内容即可
text = '''大家好,
我们一起来学习PySimpleGUI制作简单的图形用户界面,'''
sg.popup_scrolled(text,title='Hello')
输出结果为:(这里的标题就正常的显示出来了)

这个文字内容弹窗里面也有相关的设定自变量,可以根据自己的需要进行设定,自变量如下:(注意之前的弹窗的自变量也可以在这类弹窗中使用,比如刚刚用的title)

2.4 获取用户输入的弹窗
采用popup_get_text()方法,括号内容有点类似input()陈述句中的提示语,提醒用户输入
text1 = sg.popup_get_text('请输入文字1')
print(text1)
text2 = sg.popup_get_text('请输入文字2')
print(text2)
输出结果为:(当点击Ok时候控制台输出端就会获取到用户输入的文字,如果是点击Cancel,输出端为None,这里执行了两次用户输入弹出的指令,当第一次输入后点击Ok会自动弹出第二个视窗)

该类弹窗也有自己特定的自变量供选择,比如既然进行输入的操作,有时输入密码时候就不希望别人看到,就可以采用输入的显示方式,如下

测验进行密码隐藏输入,可以直接顺势将用户输入的密码也以弹窗的形式

2.5 档案选择弹出视窗
直接采用sg.popup_get_file()方法,括号里面的内容也是输入的提示语

选择后就会把详细的地址直接显示在输入框中,如下

那么同样该类弹出也有自己的特有属性自变量设定,具体如下,里面的每个自变量几乎都是超级常用的自变量,可以自行测验一下,

默认后缀,这个自变量也是常用的,比如在sublime中点击另存为时候,本身是py档案,在给档案命名的时候只需要输出文件名,后缀自动给添加上去了,

2.6 档案夹选择视窗
采用sg.popup_get_folder()方法,括号里面的内容也是输入的提示语,执行程序后会弹出选择档案的视窗,鼠标选择后就会把档案夹的路径添加到输入

2.7 进度条弹窗
采用
sg.one_line_progress_meter()方法,括号中输入相关的自变量设定内容
for i in range(1000):
sg.one_line_progress_meter(
'进度条',
i + 1,
1000,
'该进度条key',
'这是一个进度条'
)
输出结果为:(会进行动态加载,直到达到100%)

当然此类弹窗也有自己特有的自变量设定,如下,比如常见的设定竖直的还横向的,滚动条的上下限等,

比如尝试一下不同自变量的组合输出
for i in range(1, 1000):
sg.one_line_progress_meter(
'进度条',
i + 1,
1000,
'该进度条key',
'这是一个进度条',
orientation='h',
bar_color=('#F47264', '#FFFFFF')
)
输出结果为:

3 制作简易压缩软件
3.1 功能需求
- 软件运行后弹出视窗让用户选择一个档案夹
- 用户选择后再弹出视窗让用户选择压缩包保存的位置和名称
- 用户输入完成后将该档案夹内所有的档案进行压缩打包
- 完成压缩后再弹出一个视窗告诉用户这个压缩包的体积大小
3.2 功能拆解
(1)软件运行后弹出视窗让用户选择一个档案夹
- popup_get_folder()
(2)用户选择后再弹出视窗让用户选择压缩包保存的位置和名称
- popup_get_file()
- save_as=True
- default_extension = 'zip'
(3)用户输入完成后将该档案夹内所有的档案进行压缩打包
- zipfile模块
(4)完成压缩后再弹出一个视窗告诉用户这个压缩包的体积大小
- os.stat()读取档案信息
- popup()弹窗显示资料
3.3 全部代码
参考代码:(主要是细节部分,对于压缩路径的设定,需要进行处理一下,不然最后解压缩的会出现很多层级的不必要档案夹)
import PySimpleGUI as sg
import zipfile
import os
folder = sg.popup_get_folder('请选择要压缩的档案夹')
zip_path = sg.popup_get_file(
'请选择要保存的压缩包位置',
save_as=True,
default_extension='zip',
file_types=(('压缩包', '.zip'), )
)
with zipfile.ZipFile(zip_path, 'w') as zipobj:
for file in os.scandir(folder):
zipobj.write(file.path, file.path.replace(folder, '.'))
zip_size = os.stat(zip_path).st_size // 1024
sg.popup(f'压缩包体积大小为:{zip_size} KB')
输出结果演示如下:(完美,撒花??ヽ(°▽°)ノ?

0 评论