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" 
Другие вопросы по тегам