You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动