Python?库?PySimpleGUI?制作自动化办公小软件的方法

 更新时间:2021-12-28 16:29:42   作者:佚名   我要评论(0)

目录1 PySimpleGUI安装2 PySimpleGUI制作简易弹窗界面2.1 两种界面设计模式2.2 制作弹窗2.3 文字内容弹窗2.4 获取用户输入的弹窗2.5 文件选择

Python 在运维和办公自动化中扮演着重要的角色,PySimpleGUI 是一款很棒的自动化辅助模块,让你更轻松的实现日常任务的自动化。

1 PySimpleGUI安装

在命令行/终端输入:pip install pysimplegui,等待安装完成后,进入python环境,输入import PySimpleGUI回车无误后,确认安装成功

2 PySimpleGUI制作简易弹窗界面

2.1 两种界面设计模式

(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',
  pne_width=2,
  custom_text=' 好的 '
)

输出结果:(第一个参数就是要显示的信息,可以是单个,也可多个字符串,多个字符串时候,默认换行,如果是单个字符串可以通过pne_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()方法,括号里面的内容也是输入的提示语

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

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

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

2.6 文件夹选择窗口

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

2.7 进度条弹窗

采用 sg.one_pne_progress_meter()方法,括号中输入相关的参数设置内容

for i in range(1000):
  sg.one_pne_progress_meter(
    '进度条',
    i + 1,
    1000,
    '该进度条key',
    '这是一个进度条'
  )

输出结果为:(会进行动态加载,直到达到100%)

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

比如尝试一下不同参数的组合输出

for i in range(1, 1000):
  sg.one_pne_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')

输出结果演示如下:(完美,撒花??ヽ(°▽°)ノ?

到此这篇关于用 Python 库 PySimpleGUI 制作自动化办公小软件的文章就介绍到这了,更多相关Python 库 PySimpleGUI自动化办公小软件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • python使用PySimpleGUI设置进度条及控件使用
  • 一个非常简单好用的Python图形界面库(PysimpleGUI)
  • 6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)

相关文章

  • Python?库?PySimpleGUI?制作自动化办公小软件的方法

    Python?库?PySimpleGUI?制作自动化办公小软件的方法

    目录1 PySimpleGUI安装2 PySimpleGUI制作简易弹窗界面2.1 两种界面设计模式2.2 制作弹窗2.3 文字内容弹窗2.4 获取用户输入的弹窗2.5 文件选择
    2021-12-28
  • Django url反向解析的实现

    Django url反向解析的实现

    目录1、代码中URL可以出现的位置2、代码中URL书写规范3、URL反向解析4 案例1、代码中URL可以出现的位置 一个是在HTML模板中,一个是在视图函
    2021-12-28
  • k8s部署java项目的实现

    k8s部署java项目的实现

    下载jar的包 [root@master test]# wget https://dl.halo.run/release/halo-1.4.16.jar [root@master ~]# ls anaconda-ks.cfg flannel.yml
    2021-12-28
  • java线程池合理设置最大线程数和核心线程数方式

    java线程池合理设置最大线程数和核心线程数方式

    目录线程池合理设置最大线程数和核心线程数一开始是这么配置的后来网上查询线程池核心数配置最后我是这么配置的线程池核心线程数与最大线程数
    2021-12-28
  • QT编写地图实现在线轮廓图的示例代码

    QT编写地图实现在线轮廓图的示例代码

    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码?一、前言 轮廓图也叫行政区划,这里的轮廓图是指百度地图的区域轮廓图,不是之
    2021-12-28
  • Python数据分析与处理(一)--北京高考分数线统计分析

    Python数据分析与处理(一)--北京高考分数线统计分析

    目录1.1 数据爬取1.2 最高分最低分统计1.3 一本二本理科差值统计1.4 2006—2019年近14年每科分数线的平均值统计前言: 为了帮助广大考生和家
    2021-12-28
  • 92折话费充值API接口,三网24小时到账

    92折话费充值API接口,三网24小时到账

    话费充值接口1、充值请求下单(post 表单提交)网关URL:https://router.wikeyun.cn/rest/Recharge/pushOrder 参数名类型必填参数说明store_id字符串是店铺IDmobile字符串是
    2021-12-28
  • .net6引入autofac框架

    .net6引入autofac框架

    引入NuGet 注册Autofac 在Program的var app = builder.Build();前加上这段代码 builder.Host.UseServiceProviderFactory(new AutofacSe
    2021-12-22
  • log4j2异步打印性能提升方式

    log4j2异步打印性能提升方式

    目录log4j2异步打印性能提升分析原因解决方案log4j2性能提升点理解为以下三点log4j2异步打印性能提升 压测结果发现,log4j升级成log4j2之后对
    2021-12-22
  • C语言之直接插入排序算法的方法

    C语言之直接插入排序算法的方法

    目录一、什么是直接插入排序二、代码讲解总结直接 插入排序 (Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插
    2021-12-22

最新评论