无法在tkinter中找到我的图像的位置

时间:2019-05-09 15:46:11

标签: python tkinter

我在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请求返回带有图标ID的信息时,我都会收到一条错误消息:

  

图像'C:\ Users \ Serge \ Desktop \ TravelApp \ Assets \ 09d.png'不存在

但是,它与正确显示并正确命名的第一个图像位于同一文件夹中。谁能告诉我为什么找不到我的图片,谢谢

1 个答案:

答案 0 :(得分:1)

如果您再次检查了图像是否应该在该位置(您的错误提示,否则)请尝试使用os.path.join来连接路径。它比手动执行更好,因为它可以自动处理文件夹分隔符。您无需转义,并且更不会出错。

我不是Windows用户,所以我在黑暗中拍摄,但是在您的情况下应该是:

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

在Windows上有关os.path.join的更多详细信息,请查看this SO question

评论后编辑

尝试使用绝对路径。
如果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')