win系统pyinstaller打包pyqt任务栏图标不显示

pyinstaller打包pyqt程序,在pycharm中运行时任务栏可以正常显示图标:

img

但是打包之后,文件夹中正常显示图标,任务栏不显示图标。

img

img

版本是:win10系统,pyqt5,python3.11
尝试过的解决方法:
1.使用win32的api

import ctypes
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID("myappid")

2.使用绝对路径

self.setWindowIcon(QIcon(QFileInfo(__file__).absolutePath() + '/MainWindow.ico'))

3.删除win系统的IconCache缓存
4.打包时使用绝对路径

pyinstaller -Fw MainWindow.py -i D:\workspace\python\tb-study\MainWindow.ico

以上方法都试了,前前后后搞了一天了,还是不行,求帮忙!感谢各位!

可以换一种方式,仅供参考:
https://blog.csdn.net/yanhuatangtang/article/details/129119073?spm=1001.2014.3001.5502

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:PyInstaller打包PyQt5程序无法正常显示图片
  • 除此之外, 这篇博客: pyqt5 基础使用之pyinstaller打包中的 常用的打包时的命令参数: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    -D, --onedir

    生成的不是一个很大的exe文件,而是一个文件夹,里面包含着一个很小的exe以及一堆的相关文件,即创建一个包含可执行文件的单个文件夹包(默认)。

    -F, --onefile

    生成一个大的exe文件,但是没有其他相关文件,可以直接执行。即创建一个文件捆绑的单一的可执行文件。

    -n, --name

    重命名生成的exe文件的名称。

    --specpath

    生成的打包文件的目录,默认时当前目录。

    -c, --console, --nowindowed

    生成的打包程序运行时会带一个终端窗口,调试时比较方便看到输出信息,默认选项

    -w, --windowed, --noconsole

    生成的打包程序运行时不带终端窗口,建议使用这个,调试的时候用终端执行exe文件,效果和带终端的程序一样,还能看到程序崩溃的点报的trace。

    -i, --icon

    给生成的exe换个图标,默认的图标是python。

    打包相关的一些入门级的坑看这里

    https://blog.csdn.net/marwenx/article/details/108196749

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^