Почему после сборки проекта через pyinstaller не отображается иконка?

Не большой пример для воспроизведения:

from PyQt5 import QtWidgets

import sys


class MainWindow(QtWidgets.QMainWindow):

    def __init__(self):
        super().__init__()

        self.setWindowTitle("Hello World")
        l = QtWidgets.QLabel("My simple app.")
        l.setMargin(10)
        self.setCentralWidget(l)
        self.show()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    app.exec()

Когда я собираю проект с помощью вот этой команды:

pyinstaller --windowed --icon=hand.ico app.py

Я хочу чтобы менялся ярлык готового exe файла, но этого не происходит

вот иконка:

введите сюда описание изображения

Хотя везде где я читал, это должно работать, что я ни так делаю

Вот что у меня получается когда я ввожу команду

pyinstaller --windowed --icon=hand.ico app.py

введите сюда описание изображения

А я хочу чтобы вместо ярлыка дискеты у меня была моя иконка на exe файле


Ответы (3 шт):

Автор решения: S. Nick

Чтобы отобразить значок в нашем окне, нам нужно добавить вызов setWindowIcon().

q1393096.py

import sys
from PyQt5 import QtWidgets, QtGui


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Hello World")
        label = QtWidgets.QLabel("My simple app.")
        label.setMargin(10)
        self.setCentralWidget(label)
        self.show()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    app.setWindowIcon(QtGui.QIcon('hand_icon.ico'))                          # !!! +++
    w = MainWindow()
    app.exec()

pyinstaller --windowed --icon=hand_icon.ico q1393096.py


введите сюда описание изображения


Update

Вы меня немного не поняли, мне нужно, чтобы значок был не в окне в углу, а ярлыком приложения, которое получится после сборки

Я знаю как меня значок в углу приложения, знаю как менять в панели задач, но я хочу поменять именно ярлык приложения, на который я кликаю два раза и он запускает приложения

Да, теперь я понял что не понимаю вас. Добавить к вышесказанному пока нечего. Вы упомянули об ярлыке и я вам продемонстрирую на изобразениях как это выглядит у меня. Я честно не понимаю где еще вам показать иконку.

1. введите сюда описание изображения

2. введите сюда описание изображения

3. введите сюда описание изображения

4. введите сюда описание изображения



Update 2

А я хочу чтобы вместо ярлыка дискеты у меня была моя иконка на exe файле

У меня именно так как вы хотите и получается:

введите сюда описание изображения

→ Ссылка
Автор решения: didanty

Многое перепробовал. помогло создание скрипта myscript.spec - вот тут есть описание https://pyinstaller.org/en/stable/usage.html#using-pyinstaller А иконку добавил в своей программе используя

root.iconbitmap('T:\\папка\\папка\\icon.ico')

myscript.spec

# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
    ['mysoft.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='Название программы',
    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=['T:\путь к папке\icon.ico'],
)

едите сюда код

→ Ссылка
Автор решения: Андрей

Может кому-то поможет в будущем... Я тоже мучался с тем что не отображается моя иконка. Как только измените ИМЯ файла, все заработает. Почему так - не знаю, но сработало.

→ Ссылка