当前位置: 首页 > news >正文

【pyQT 专栏】程序设置 windows 任务栏缩略图(.ico)教程

pyQT 生成了一个exe,但是必须将 ico 文件放在 exe 文件夹目录下,缩略图才显示图标
 
 

这个问题是因为PyInstaller打包时,图标文件没有被正确嵌入到exe中,或者程序运行时找不到图标文件。以下是几种解决方案:

方案1:使用资源文件系统(推荐)

1. 创建资源文件 resources.qrc

<RCC><qresource prefix="/"><file>audio_icon.ico</file><file>audio_icon.png</file></qresource>
</RCC>

2. 编译资源文件

pyrcc5 resources.qrc -o resources_rc.py

3. 修改主程序代码

import sys
import os
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtCore import QFile, QIODevice# 导入编译后的资源文件
import resources_rcclass AudioPlayer(QMainWindow):def __init__(self):super().__init__()# 设置应用程序图标self.set_app_icon()# 其他初始化代码...def set_app_icon(self):"""设置应用程序图标"""try:# 方法1: 使用资源系统app_icon = QIcon(":/audio_icon.ico")self.setWindowIcon(app_icon)QApplication.setWindowIcon(app_icon)except Exception as e:print(f"设置图标失败: {e}")# 备用方法:使用内置的Qt图标self.setWindowIcon(QIcon.fromTheme("audio-volume-high"))

方案2:修改打包脚本,确保图标被正确包含

# build_exe.py
import PyInstaller.__main__
import os
import sysdef build_exe():current_dir = os.path.dirname(os.path.abspath(__file__))main_script = os.path.join(current_dir, "audio_player_gui.py")# 确保图标文件存在icon_path = os.path.join(current_dir, "audio_icon.ico")if not os.path.exists(icon_path):print(f"警告: 图标文件 {icon_path} 不存在!")params = [main_script,'--name=AudioPlayer','--onefile','--windowed','--icon=' + icon_path,  # 使用绝对路径'--add-data=' + icon_path + ';.',  # 确保图标文件被包含'--add-data=audio_icon.png;.', '--noconfirm','--clean','--hidden-import=PyQt5.QtCore','--hidden-import=PyQt5.QtGui','--hidden-import=PyQt5.QtWidgets','--hidden-import=pygame','--add-binary=audio_icon.ico;.',  # 使用add-binary确保图标被正确包含]PyInstaller.__main__.run(params)if __name__ == "__main__":build_exe()

方案3:使用base64嵌入图标(完全不需要外部文件)

import sys
import base64
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtCore import QByteArray, QBuffer, QIODeviceclass AudioPlayer(QMainWindow):def __init__(self):super().__init__()# 设置base64嵌入的图标self.set_base64_icon()# 其他初始化代码...def set_base64_icon(self):"""使用base64编码的图标"""# 这里是一个示例base64编码的图标(你需要替换为你的图标base64)# 你可以使用在线工具将ico文件转换为base64icon_base64 = """AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAADMzMwAzMzMAMzMzADMzMwAzMzMAMzMzADMzMwAzMzMAMzMzADMzMwAzMzMAMzMzADMzMwAzMzMAMzMzADMzMwAAAAAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A"""try:# 解码base64并创建图标icon_data = base64.b64decode(icon_base64)pixmap = QPixmap()pixmap.loadFromData(icon_data)icon = QIcon(pixmap)self.setWindowIcon(icon)QApplication.setWindowIcon(icon)except Exception as e:print(f"设置base64图标失败: {e}")# 使用Qt内置图标作为备用self.setWindowIcon(QIcon.fromTheme("audio-volume-high"))

推荐使用方案1(资源文件系统),这是最可靠的方法,可以确保图标文件被正确嵌入到exe中,无论exe在什么位置运行都能正常显示图标。

http://www.sczhlp.com/news/107799/

相关文章:

  • 隧道建设网站怎么了一个网页大概多少钱
  • 装饰公司做网站人气最旺的微信公众号
  • 手机网站建设和图跃企业网站建设
  • mifa网站开发费用1688货源网下载app
  • 新手用什么框架做网站比较好泰州市网站建设制作
  • 政务网站建设信息游戏网站上做银商为网站人员
  • 网站建设周期表微信开放平台小程序
  • 青海微网站建设军事新闻直播在线观看
  • 网站免费虚拟主机申请网站建设好吗
  • 专做轮胎的网站网站建设公司3lue
  • Say 题选记(9.14 - 9.20)
  • vm的配置
  • 力扣72题 编辑距离
  • 成都建设网官方网站从化区城郊街道网站麻二村生态建设
  • 网站备案转服务器做营销网站多少钱
  • 网站备案流程及步骤互联网技术与应用
  • 农家乐网站建设网站 多少篇文章才能上线
  • 打字建站宝dede购物网站
  • 数学基本结构框架
  • 2025.9.16总结
  • 在 Tailscale 中禁用 DNS
  • 白菜博主的返利网站怎么做建设网站天河区
  • 《原始传奇》官方网站wordpress 右侧有个赞助商
  • 学做网站和推广要多久2023房地产新闻
  • 洛阳做多屏合一网站怀化网站建设
  • 爱站seo查询软件添加网站关键词
  • 服务好的企业建站卡密提取网站怎么做
  • 尚义网站建设中国石油第一建设公司官网
  • 小红书推广运营百度手机seo软件
  • 东莞网站建设效果重庆网站建设兼职