鱼C论坛

 找回密码
 立即注册
查看: 3831|回复: 9

[已解决]PyQt5 打包没有icon图标,百度方法没用,终极解决之道究竟在哪?

[复制链接]
发表于 2018-8-15 10:43:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 流言 于 2018-9-18 17:18 编辑


打包命令:
  1. pyinstaller -F -w -i favicon.ico update.py
复制代码

程序显示图标了,但是点进去,图标没了!
绿色环保的可爱图标:
1.png

但是点开程序图标没了!!!我可爱的图标没了啊!!!!
2.png

预览的时候是有的:

                               
登录/注册后可看大图


百度的方法用了,还是没图标,设置绝对路径之类的。有没有什么方法可以连图标一起打包呢?
如果设置了绝对路径,把程序拷贝到其他电脑,图标也就没了。

解决办法:
1、创建qrc文件,写入以下内容:
  1. <RCC>
  2.   <qresource prefix="/">
  3.     <file>favicon.ico</file>
  4.   </qresource>
  5. </RCC>
复制代码


2、生成py文件,这个py文件把图片保存成二进制:
  1. pyrcc5 -o test.py images.qrc
复制代码


3、导入模块,设置图标
  1. import test
  2. MainWindow.setWindowIcon(QIcon(':/favicon.ico'))
复制代码
最佳答案
2018-9-2 01:00:05
还有一种解决方法,可以把图标内嵌入代码

加码:
import base64
a="图像位置:"  #如d:\hh.ico
open_icon = open(a,"rb")
b64str = base64.b64encode(open_icon.read())
open_icon.close()
write_data = "%s=%s\n" % (os.path.basename(a).split('.')[0],b64str)
f = open("icon.py","a")
f.write(write_data)
f.close()

解码:
import base64,icon
with open('icon.py') as f_obj:
        for i in f_obj:
                aa=i.split('=')
                with open('%s.ico'%aa[0],'wb+') as ff:
                        ff.write(base64.b64decode(eval('icon.%s'%aa[0])))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-15 11:09:49 | 显示全部楼层

回帖奖励 +2 鱼币

我是来骗渔币的~楼主别打我哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-15 11:27:12 | 显示全部楼层

回帖奖励 +2 鱼币

我是来骗渔币的~楼主别打我哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-15 12:08:30 | 显示全部楼层

回帖奖励 +2 鱼币

直接跳过,学后面的tkinter
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-15 12:58:20 | 显示全部楼层

回帖奖励 +2 鱼币

了解了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-15 17:40:31 | 显示全部楼层

回帖奖励 +2 鱼币

你的ICO是自己画的?有没有用软件生成,实际使用不同环境有好几个像素大小
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-15 20:55:45 | 显示全部楼层
解决办法:
1、创建qrc文件,写入以下内容:
  1. <RCC>
  2.   <qresource prefix="/">
  3.     <file>favicon.ico</file>
  4.   </qresource>
  5. </RCC>
复制代码


2、生成py文件,这个py文件把图片保存成二进制:
  1. pyrcc5 -o test.py images.qrc
复制代码


3、导入模块,设置图标
  1. import test
  2. MainWindow.setWindowIcon(QIcon(':/favicon.ico'))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-2 01:00:05 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +2 鱼币

还有一种解决方法,可以把图标内嵌入代码

加码:
import base64
a="图像位置:"  #如d:\hh.ico
open_icon = open(a,"rb")
b64str = base64.b64encode(open_icon.read())
open_icon.close()
write_data = "%s=%s\n" % (os.path.basename(a).split('.')[0],b64str)
f = open("icon.py","a")
f.write(write_data)
f.close()

解码:
import base64,icon
with open('icon.py') as f_obj:
        for i in f_obj:
                aa=i.split('=')
                with open('%s.ico'%aa[0],'wb+') as ff:
                        ff.write(base64.b64decode(eval('icon.%s'%aa[0])))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-6 22:03:59 | 显示全部楼层

回帖奖励 +2 鱼币

333
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-7 11:32:46 | 显示全部楼层

回帖奖励 +2 鱼币

666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 17:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表