【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中

时间:2024-04-07 10:00:41

一、利用Qt Designer设计你的UI界面(下面是我模仿某音乐播放器设计的一部分的界面)

【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中

Qt界面里所需要的按钮图片等资源通过ui.qrc文件加载进来(如何写请自行百度)

【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中

然后通过Edit StyleSheet写入到各个控件上

【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中

到此,你的pyqt 的UI界面完成

二、将设计好的.ui界面通过命令转成.py文件(前提是电脑安装pyqt5和pyinstaller,安装方法请自行百度,pyinstaller安装稍微复杂,需要安装pywin32)

通过PC端win+R,输入cmd进入控制台界面,cd到你的文件夹下

输入:pyuic5 -x MainWiget.ui -o MainWidget.py,然后回车即可

然后在你的文件夹下会生成MainWidget.py文件

接着将.qrc文件转成.py文件,这一步很重要,否则你的图片等资源将无法加载和打包到exe

继续输入:pyrcc5 -o ui_rc.py ui.qrc,然后回车即可

然后在你的文件夹下会生成ui_rc.py文件,打开文件以后如下,其实就是生成外部二进制资源文件

【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中

三、由于原生的Qt标题栏很难看,所以我重写了一个标题栏,然后将设计好的界面加进去

【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中

这样一个基本的音乐播放器的界面就完成了

三、利用pyinstaller打包exe(重点来了)

打包之前,你的文件夹应该包括以下文件

【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中

然后我在cmd控制台输入:pyinstaller -F -w -i logo.ico MusicPlayer.py,然后回车

我们看到编译成功

【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中

此时,文件夹下新生成几个文件夹,其中生成的exe就在dist文件夹下,前两个可以删除掉

【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中

【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中

同时我们看到该文件夹下还生成了一个MusicPlayer.spec文件,我看了网上其他帖子说在这个文件中修改一些配置:例如添加a.datas以及添加Tree等就可以将图片资源打包到exe中,我试过其实是不行的,一旦图片资源的绝对路径更改或者将单独exe放到别的电脑上运行,资源还是会丢失的,所以这个.spec文件其实是不需要做任何修改的

【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中

最后再运行exe

【python】pyinstaller打包基于PyQt5的程序以及将图片资源文件打包到exe中