Arcanum_Viator
@Arcanum_Viator
Индусский кодер

Как заставить готовый exe-файл обращаться к файлам по фиксированной директории?

Есть приложение для чтения и редактирования текстовых файлов на Tkinter.
У приложения установлена иконка и интерфейс с png-картинками, всё это добро лежит в специальной
папке. Есть возможность "перетаскивать" файлы на ярлык, после чего файл открывается.

Если запустить приложение напрямую находясь в одной директории с папкой элементов интерфейса то всё работает.
Если запустить приложение через "Пуск" или перетянув текстовый файл на ярлык
приложения, то папка с интерфейсом ищется в той папке где лежит перетянутый файл, а не там
где лежит приложение.

# Путь у иконки.
root.iconbitmap("interface_icon/myIcon.ico")

# Путь у картинки для пункта меню.
newfile_Image=PhotoImage(file='interface_icon/new_file.png')

filemenu.add_command(label="Новый файл", accelerator="Ctrl+R", image=newfile_Image, compound=LEFT, command=create_file)


Сама ошибка:
Traceback (most recent call last):
  File "main.py", line 203, in <module>
  File "tkinter\__init__.py", line 1871, in wm_iconbitmap
_tkinter.TclError: bitmap "interface_icon/myIcon.ico" not definedTraceback (most recent call last):
  File "main.py", line 203, in <module>
  File "tkinter\__init__.py", line 1871, in wm_iconbitmap
_tkinter.TclError: bitmap "interface_icon/myIcon.ico" not defined

Можно ли как-то задать "фиксированный путь" для изображений и иконок, но при этом не задавать точный путь вроде "C:\Users\UserName\AppFolder\interface_icon\myIcon.ico", чтобы приложение могло работать без переписывания кода даже если перенести его с компьютера на компьютер ?
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
каталог, в котором находится твой текущий .py файл можно получить os.path.dirname(__file__)

ты можешь сменить текущий каталог на него os. chdir(...) либо при открытии файлов добавлять этот путь вручную
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы