Python pyinstaller --splash参数 pyi_splash(闪屏动画) ,缓解Python程序加载缓慢的影响
使Python GUI程序拥有真正的启动动画 (pyi_splash) ;点击即显示!几乎不耗时
未经许可,不允转载!
原作者: 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 的效果
可以看出启动程序与窗口弹出(界面完成加载)之间存在一段“空白期”,如果用户电脑较老,那么这个时间会更长,使用户体验不佳!
-
启用 pyi_splash 的效果
可以看出 启用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
出现问题时可以参考上述链接中的内容!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)