pyinstaller打包,exe图片资源无法显示问题

目录

问题描述

pyinstaller打包tkinter图片显示

pyinstaller打包pyqt图片显示

建立 images.qrc

生成 images.py

程序中使用


转载:

pyinstaller打包——图片资源无法显示问题

[PyQt] 使用.qrc 生成资源文件供程序中使用

问题描述

在pyqt或tkinter里面用到图片的时候,pyinstaller打包的程序不能把图片资源弄上,也就是图片无法显示。

pyinstaller打包tkinter图片显示

请参考pyinstaller打包——图片资源无法显示问题

pyinstaller打包pyqt图片显示

一般pyqt都是用desinger来设计界面,哪里可以把图片生产资源文件,也就是qrc,然后用python自带的工具pyrcc 把他转换成py文件调用即可。请参考[PyQt] 使用.qrc 生成资源文件供程序中使用

建立 images.qrc

建立 images.qrc文件,里面保存了资源位置:

<!DOCTYPE RCC>
<RCC version="1.0">
    <qresource>
        <file alias="icon.png">icon.png</file>
        <file alias="swap.png">swap.png</file>
    </qresource>
</RCC>

生成 images.py

通过命令,用此qrc文件生成 images.py 资源文件:

pyrcc5 -o images.py images.qrc

使用pycharm中external tools,配置查看https://jingyan.baidu.com/article/5553fa8298b99c65a23934dd.html

程序中使用

import images

# 在程序中使用
icon = QIcon(':/icons/add.png')

self.swapButton.setStyleSheet("QPushButton{border-image: url(:/swap.png);width:40px;height:40px}")

 

我创建了GUI窗口,用编辑器编译运行会显示窗口,但是生成EXE运行后,窗口不显示图片中的窗口是用编译器编译运行的时候出现的,exe运行就黑框,直接就没了,也没报警,也没错误 ``` class MY_GUI(): def __init__(self,init_window_name): self.init_window_name = init_window_name def set_init_window(self,li): self.init_window_name.title("解析") self.init_window_name.geometry('1068x681+10+10') #self.scrolly=Scrollbar(self,width=25,orient=VERTICAL) #self.scrolly.grid(row=0,column=1,padx=(0,0),pady=(0,0),sticky=NS) self.listb = Listbox(self.init_window_name,width=60, height=35) self.listb.grid(row=0, column=0) self.result_data_Text = scrolledtext.ScrolledText(self.init_window_name, width=70, height=49) self.result_data_Text.grid(row=0, column=12, rowspan=15, columnspan=10) #listb['yscrollcommand']=scrolly.set for item in li: self.listb.insert("end",item) #self.listb.bind('<Double-Button-1>',handlerAdaptor(printList,a=self.result_data_Text,b=self.listb)) self.str_trans_to_md5_button = Button(self.init_window_name, text="组包结果", bg="lightblue", width=10,command=self.myprintlist) self.str_trans_to_md5_button.grid(row=1, column=11) #self.init_window_name.mainloop #return def myprintlist(self): print("###") def start(): packets=rdpcap("./file.pcap") li = deal_with_pcap(packets) init_window = Tk() ZMJ_PORTAL = MY_GUI(init_window) # 设置根窗口默认属性 ZMJ_PORTAL.set_init_window(li) init_window.mainloop start() ``` ![编译运行的图片](https://img-ask.csdn.net/upload/202006/20/1592622972_892947.png)
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页