PySide6 + PyInstaller单文件程序图标显示异常求助
PySide6 + PyInstaller单文件程序图标显示异常求助
我最近在做一个单文件的Python桌面程序,用PySide6写的QMainWindow,想要实现三个地方都显示自定义图标:Windows任务栏、窗口左上角,还有生成的exe文件本身。
目前通过PyInstaller的参数设置,exe文件的图标已经正常显示了,但是任务栏和窗口左上角一直是默认的Python图标,可气的是直接在IDE里运行源码的时候,窗口左上角的图标是正常显示的!
我试了把ico文件放在不同的位置,也手动修改了生成的spec文件,但还是没搞定,有没有大佬能给点建议啊?
下面是我的代码和打包配置:
test.py 源码
import sys from PySide6.QtCore import Qt from PySide6.QtGui import QIcon from PySide6.QtWidgets import QApplication, QMainWindow, QLabel class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Hello World Application") label = QLabel("Hello, World!", self) label.setAlignment(Qt.AlignmentFlag.AlignCenter) self.setWindowIcon(QIcon("./app_icon.ico")) self.setCentralWidget(label) if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.resize(400, 300) window.show() sys.exit(app.exec())
我用的PyInstaller打包命令
PyInstaller --onefile --noconsole -i='./app_icon.ico' --name "TestApp" ".\test.py"
生成的test.spec文件
# -*- mode: python ; coding: utf-8 -*- a = Analysis( ['test.py'], pathex=[], binaries=[], datas=[('app_icon.ico', '.')], hiddenimports=[], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], noarchive=False, optimize=0, ) pyz = PYZ(a.pure) exe = EXE( pyz, a.scripts, a.binaries, a.datas, [], name='test', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=False, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, icon=['app_icon.ico'], )
补充说明:我的图标是用PNG格式转成ICO的(用在线转换工具处理的),放在项目根目录下。现在的问题是打包后运行程序,exe图标正确,但任务栏和窗口左上角还是默认的Python图标,IDE运行则完全正常。我怀疑是不是spec文件的datas配置有问题,但试了几种写法都没效果...
备注:内容来源于stack exchange,提问作者Call_me_Utka




