Python pyinstaller --splash参数 pyi_splash(闪屏动画) ,缓解Python程序加载缓慢的影响


未经许可,不允转载!
原作者: https://blog.csdn.net/qq_45429426


环境与使用说明


环境

解释器 :Python 3.7x

包版本 :Pyinstaller 4.8

系统 :Windows 10


使用说明 (必看)

1.安装: pyi_splash无法从包管理工具下载和安装也无需安装,此包与Pyinstaller类似捆绑关系,编写时直接 import pyi_splash 就行(请忽视包不存在的警告)。

2.运用场景: 使用Pyinstaller参数 –onefile 打包的程序运行过慢 或 程序界面加载过慢导致存在大量“空白期” ,使用户不知道程序是否被正确启动,是否正在运行。

3.原理: 在程序被启动后先显示闪屏动画 (几乎不耗时,效果图在下方), 在程序GUI完成加载时退出。这样可以使用户知道程序已经被开启,且正在加载。 详细信息点我

4.注意: Pyinstaller 官方声明此功能与 macOS 不兼容, 因为 macOS 底层 GUI 工具包不支持,具体原因 点这

(本文写于2022/1/16)



效果演示

  • 没有启用 pyi_splash 的效果

noload
可以看出启动程序与窗口弹出(界面完成加载)之间存在一段“空白期”,如果用户电脑较老,那么这个时间会更长,使用户体验不佳!


  • 启用 pyi_splash 的效果

haveload
可以看出 启用pyi_splash 后,在程序界面加载完成前,会有一个闪屏动画,此闪屏动画的图片允许开发者随意指定(已亲自尝试可用的格式有: PNG \ JPG \ GIF)。闪屏动画可以用来引导用户等待程序加载。

闪屏动画会在主界面完成加载时自动退出。



快速使用

我们需要两个py文件,一个是我们的主程序,另一个用来引导 pyi_splash

随意写一个 main.py

import tkinter
import loading_window     # 注意!和其他包一样,名称是不固定的!

root = tkinter.Tk()

root.title('Hello, splash!')

root.mainloop()

接下来是 loading_window.py (包名可以随意命名)

import pyi_splash      # 编写时请忽视包不存在,pyinstaller打包时会自动把包写入到程序,不会报错

pyi_splash.update_text('loaded...')   
# 详见:https://pyinstaller.readthedocs.io/en/stable/advanced-topics.html#module-pyi_splash

pyi_splash.close()    # 如果丢失这行代码,闪屏动画(加载界面)将会与主程序一同结束!而不是主界面加载完成时结束!

接下来该运行打包命令了,我们需要在打包命令中加入参数:

--splash <image_path>

例子如下(-Fw :仅生成一个exe文件并去除命令行):

pyinstaller main.py -Fw --splash "C:\Users\Administrator\Desktop\1.jpg"

如果电脑比较好,可能一下子就加载过去了,这时可以在较大型项目上测试!打包后效果如下:
结果



如果文中描述存在错误之处,还请指出!


https://pyinstaller.readthedocs.io/en/stable/advanced-topics.html#module-pyi_splash

https://stackoverflow.com/questions/48315785/pyinstaller-adding-splash-screen-or-visual-feedback-during-file-extraction

出现问题时可以参考上述链接中的内容!


  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值