Найти - Пользователи
Полная версия: Python компиляция в .exe с вшитием (сохранением) иконки окна приложения.
Начало » Python для новичков » Python компиляция в .exe с вшитием (сохранением) иконки окна приложения.
1
NewStudent
Доброй ночи!

Написал несколько программ, не без данного форума, всё начало отлично получаться.

Уже начал заниматься “марафетом” своих программ и столкнулся с тем, что не понимаю, как вшить в .exe иконку самого окна (toolbar)приложения.

Мне удалось сохранить иконку самого .exe, что при переноси его на другой носитель без файла .ico иконка не исчезает, а вот с значком (иконкой) окна приложения какие то проблемы.

Вот что я пробовал:


 pyinstaller --onefile --noconsole --add-binary=".../.ico;." --name [name] --icon=C:\Users\...\...\....\.ico
[name]

Пробовал просто
 pyinstaller Icon=
, пробовал data–add и т.д.

Всё идеально работает, когда файл находится в какой-нибудь директории (в любой), но стоит мне приложение перенести за пределы этого файла, то именно значок (иконка) окна приложение становится по умолчанию (знак Python)

Делал на
 import PySimpleGUI as sg

Добавлял
# Создать окно
 window = sg.Window('name', layout, grab_anywhere=True, resizable=True, icon=('.../.ico')

Делал просто icon= без пути, а просто добавлял имя файла (так как он был в той же самой директории)

Ничего не помогает и хочется понять это возможно. Знаю что можно на каком-нибудь файлобменнике разместить картинку и использовать её, но мне интересно именно вшить её в .exe

Спасибо за ответы и помощь!
DamMercul
Если хочешь вшить картинку в исходный код, то залей его в переменную внутрь кода
 from base64 import b64encode
with open(".../.ico", "rb") as x:
    d = x.read()
print(b64encode(d).decode())
После этого полученный текст вставь в переменную внутрь кода как строчку
 from base64 import b64decode
d = """
BASE64 ENCODED ICON
"""
icon_data = b64decode(d.encode())
Если PySimpleGUI не позволяет использовать иконки из оперативки, то запиши переменную “icon_data” во временный файл с тем же расширением и используй его.
P.S. можно не использовать бейс 64, а вписать просто как массив байтов, я просто так привык
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB