Я нашел некоторую информацию об этом здесь, в Stack Overflow, и пробовал это сделать, но у меня это не работает. Мне нужна помощь сообщества :)
Как следует из названия, я хочу добавить * .ico в свои окна tkinter. Проблема в том, что при создании одного EXE-файла с помощью pyinstaller это не очень просто. Итак, ниже это именно то, что я реализовал на основе информации, собранной на Stack Overflow. Использование Python 3.5 на 64-битной машине.
Имя моего скрипта - Calculator.py Имя ico - Calculator.ico.
1. Я добавил в свой скрипт Python следующие строки кода:
import os
import sys
datafile = "calculator.ico"
if not hasattr(sys, "frozen"):
datafile = os.path.join(os.path.dirname(__file__), datafile)
else:
datafile = os.path.join(sys.prefix, datafile)
window = tkinter.Tk()
window.iconbitmap(default=datafile)
2а. Затем я создал свой единственный EXE-файл с помощью pyinstaller, используя следующие команды:
pyinstaller -w -F -i "C:\PythonProjects\Calc\calculator.ico" calculator.py
2б. Я также попытался создать свой единственный EXE-файл с помощью следующих команд, чтобы посмотреть, поможет ли это:
pyinstaller --onefile --windowed --icon=calculator.ico calculator.py
3. После того, как pyinstaller построил единственный EXE-файл, я добавил некоторое содержимое в файл * .spec - ниже представлен полный файл * .spec с добавленным содержимым:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['calculator.py'],
pathex=['C:\\PythonProjects\\calc'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries + [('caclulator.ico', 'C:\\PythonProjects\\calc\\calculator.ico', 'DATA')],
a.zipfiles,
a.datas,
name='calculator',
debug=False,
strip=False,
upx=True,
console=False , icon='calculator.ico')
Я добавил в exe = EXE следующее:
+ [('caclulator.ico', 'C:\\PythonProjects\\calc\\calculator.ico', 'DATA')]
После добавления вышеуказанного содержимого в файл спецификации я выполнил следующую команду.
pyinstaller calculator.spec
После восстановления EXE я запускаю EXE-файл и получаю следующее сообщение об ошибке:
- Не удалось выполнить калькулятор скрипта
Заранее спасибо!