未经许可,不允转载!
原作者: 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

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


Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐