Не могу найти местоположение моего изображения в Tkinter - PullRequest
0 голосов
/ 09 мая 2019

У меня есть ярлык в tkinter, который отображает изображение, соответствующее запросу json, однако, когда я пытаюсь изменить изображение, которое находится в том же каталоге, что и первое изображение, я сталкиваюсь с ошибкой.

мой код выглядит следующим образом (упрощенно):

class Application(tk.Tk):
    def __init__(self):
        super().__init__()

        img_file = (r"C:\Users\Serge\Desktop\TravelApp\Assets\01d.png")

        self.title("Travel Application")
        self.geometry("500x300")

        self.weather_image = tk.PhotoImage(file=img_file)
        self.weather_image_label = tk.Label(self.box1, image=self.weather_image, width='100', height='100')

    def json_Request(self, url):
        try:
            icon = data['weather'][0]['icon']
            os.chdir(os.path.dirname(__file__))
            currentDIR = os.getcwd()
            img_file = (currentDIR + '\\Assets\\' + str(icon) + '.png')
            self.weather_image_label.configure(image=img_file)
            self.weather_image_label.image = img_file

Когда запрос json возвращается с идентификатором значка, я просто получаю сообщение об ошибке:

изображение 'C: \ Users \ Serge \ Desktop \ TravelApp \ Assets \ 09d.png' не существует

однако он находится в той же папке, что и первое изображение, которое отображается правильно и имеет правильное имя. Может кто-нибудь сказать мне, почему мое изображение не может быть найдено, Спасибо

1 Ответ

1 голос
/ 09 мая 2019

Если вы дважды проверили, что изображение находится там, где оно должно быть (ваша ошибка предполагает другое), попробуйте использовать os.path.join для объединения путей.Это лучше, чем делать это вручную, так как он может автоматически обрабатывать разделитель папок.Вам не нужно избегать вещей, и это менее подвержено ошибкам.

Я не пользователь Windows, поэтому я стреляю в темноте, но в вашем случае должно быть:

img_file = os.path.join(currentDIR, 'Assets', str(icon) + '.png')

Посмотрите на этот вопрос SO для более подробной информации о os.path.join в Windows.

ПРАВКА после комментариев

Попробуйте работать с абсолютными путями.
Если скрипт ptyhon находится по адресу:

'C: \ Users \ Serge \ Desktop \ TravelApp

и изображения хранятся в сложенном виде:

'C: \ Users \ Serge \ Desktop \ TravelApp \ Assets'

это должно работать:

icon = data['weather'][0]['icon']
currentDIR = os.abspath(os.path.dirname(__file__))
img_file = os.path.join(currentDIR, 'Assets', str(icon) + '.png')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...