我在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'不存在
但是,它与正确显示并正确命名的第一个图像位于同一文件夹中。谁能告诉我为什么找不到我的图片,谢谢
答案 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')