给pyinstaller生成的exe添加一个闪屏画面

2 篇文章 0 订阅
1 篇文章 0 订阅

引言

之所以会有这个文章,是因为之前写的好多应用被使用pyintaller打包成exe后,在打开到弹出应用界面时需要一定的时间,如果应用稍微复杂一些或者电脑性能较差,这个时间就可能会很长,如果在这段时间没有什么能表示现在应用已经在运行的消息,这可能会让使用者以为应用没打开,这很不利于应用的正确使用。为此我一开始想的是提高应用的运行速度,看到网上说可以使用Nuitka代替pyinstaller进行打包,所以我就花了很多时间研究怎么使用Nuitka打包,发现这个工具是真的难用,使用老版本(0.6.X)时,编译时确实是快一点,但是还需要在编译后一个个的把缺少的模块给找出来,而且在我的一个应用编译时,里面使用了matplotlib的qtbackend,结果无论使用什么方法,最后都会报错。而使用新版本(1.0.3)时,变异过程是真的慢,一个很普通的应用(使用pyintaller打包成exe后大概有90M),但是用Nuitka打包时耗时估计有3个小时,简直了!!!不过打包成功后运行速度确实是快了,而且打包了之后一般不用像老版本那样会缺少模块,但是这个打包时间真是不能接受。虽然Nuitka打包比pyintaller打包后的结果加密性更好,但是目前我还没有较强的加密需求,所以Nuitka打包不是很合适。而且有些应用即使使用Nuitka打包后,运行速度快了,但是从点击exe到弹出应用界面还是需要时间的,虽然Nuitka打包也可以加闪屏,但是好像使用MinGW进行编译时是不能添加闪屏的,所以还是不行。
后面在查询的过程中,发现现在pyintaller提供了一个给应用添加闪屏的命令,而且还可以在闪屏图上添加当前应用解压的过程,这样在点击exe后,会立马弹出闪屏,然后在闪屏上显示当前的解压情况。(pyintaller打包应用为一个单独的exe后,再点击生成的exe时,会先解压相应的资源,然后解压完成后再运行)本文下面介绍怎么使用pyintaller的闪屏。

使用方法

下图就是打开应用后弹出的一个闪屏,这个闪屏会在点击exe后立即弹出,然后在下面显示当前正在解压的文件。
闪屏画面
在打包之前需要在要打包的main.py文件中添加一些代码,添加后的代码如下:

if __name__ == '__main__':
	##
    try:
        import pyi_splash
        pyi_splash.update_text('UI Loaded ...')
        pyi_splash.close()
    except:
        pass
	##
	# 上面两个##之间的代码是要添加的
    app = QApplication(sys.argv)
    myshow = RawSigProcess()
    myshow.show()
    sys.exit(app.exec())

添加上面的代码后,使用下面的打包命令:
打包命令:pyinstaller -F -w -i main.ico main.py --splash splash.png
使用上面的命令后,会将main.py打包成一个图标名为main.ico,闪屏图片为splash.png的单独exe应用,该应用在运行时不会弹出cmd窗口。其中main.ico splash.png需要自己提供,并放在和main.py同级的目录下。
运行上面的命令后,打开生成的main.exe,这时候也会弹出闪屏,但是闪屏中不会显示当前解压的文件,如果需要显示当前解压的文件,需要修改pyinstaller打包生成的.spec文件。
在使用上面的打包命令后,会在main.py同级的目录下生成文件main.spec,为了显示当前的解压文件,需要将跟添加闪屏(splash)有关的部分进行修改,具体可以参考pyinstaller官方文档

splash = Splash(
    'splash2.png',
    binaries=a.binaries,
    datas=a.datas,
    text_pos=(75,295),
    text_size=-15,
    test_color='black',
    minify_script=True,
    always_on_top=True,
)

其中text_pos为要显示的解压文件的文字位置,文字的原点为左下角,闪屏的原点为图片的左上角。text_size为文字的大小,如果为正则表示字体大小单位为磅,为负时,表示单位为像素。test_color为字体颜色,但是我不知道为什么不起作用。
修改完main.spec文件中,需要再进行打包,但是此时要根据spec文件打包。命令为:
pyinstaller main.spec
运行上面的命令之后,就会生成带闪屏且有解压提示的exe。

核心步骤

  1. 使用命令pyinstaller -F -w -i main.ico main.py --splash splash.png打包
  2. 修改main.spec文件
  3. 使用命令pyinstaller main.spec
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值