Python - значки приложений и левого верхнего угла
Надеюсь, есть простое решение моей проблемы. У меня есть приложение Python tkinter, и все работает, как ожидалось. Я использовал следующую команду, чтобы сгенерировать отдельный exe-файл для распространения.
"C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Scripts\pyinstaller" -w -F --i "theIcon.ico" "myappsource.py"
Исполняемый файл работал так, как ожидалось. Однако я понял, что забыл поместить значок в верхнем левом углу моего окна. После небольшого онлайн-исследования я определил, что в мой код необходимо добавить следующую строку (обратите внимание, что я хочу, чтобы значок приложения и значок в верхнем левом углу были одинаковыми):
root.wm_iconbitmap('theIcon.ico')
Поскольку это единственное изменение, я запустил приложение в Visual Studio, и оно заработало как положено, вставив значок в верхний левый угол. Однако когда я перекомпилировал приложение, используя ту же команду, что и раньше, приложение теперь не будет работать. Я получаю всплывающее окно под названием "Фатальная ошибка!" с "Не удалось выполнить скрипт myappsource" в качестве сообщения. Я пробовал с и без строки root.wm_iconbitmap несколько раз - один способ работает, другой нет. Какие-либо предложения? Спасибо
1 ответ
У меня есть несколько догадок о том, что здесь происходит.
Добавляя
root.wm_iconbitmap
Теперь вы создаете зависимость от этого файла. tkinter попытается открыть theIcon.icoТем не менее, ваш вызов pyinstaller включает только myappsource. Поэтому, когда tkinter ищет значок, он не работает, и, следовательно, ваша программа не запускается. (Он работает нормально в Visual Studio, потому что у вас есть файл локально, но не в установщике.)
Решение состоит в том, чтобы добавить файл в ваш установщик. Основываясь на документации по pyinstaller, похоже, что вы хотите использовать опцию --add-binary.
Попробуйте это в качестве командной строки. (Я обрезал ваш длинный путь к pyinstaller, просто чтобы важные аргументы стали более заметными.)
pyinstaller -w -F --i "theIcon.ico" --add-binary theIcon.ico "myappsource.py"