Python Tkinter加载download.gif报无此文件或目录错误如何解决
报错原因
这个_tkinter.TclError: couldn't open "download.gif": no such file or directory报错的核心是Tkinter在执行加载图片的逻辑时,按照你传入的文件路径找不到对应文件,常见触发场景有3种:
- 代码里用了相对路径
download.gif,但这个图片文件没有放在运行运行Python脚本时的当前工作目录下(很多人会误以为相对路径是相对于脚本文件所在位置,实际是相对于你执行python xxx.py命令时所在的终端路径,IDE运行时也可能自动把工作目录设成别的位置) - 文件名不匹配:比如实际文件后缀是大写
.GIF(Linux、macOS系统文件名大小写敏感)、开了系统隐藏扩展名的功能导致你以为文件叫download.gif实际是download.gif.png/download.gif.jpg、文件名拼写错误 - 对应位置根本没有这个图片文件,你只在代码里写了文件名,但没有把
download.gif存到本地
修复方法
按以下步骤排查修复即可:
- 先确认文件本身存在、命名完全正确
- 关闭系统的「隐藏已知文件类型扩展名」选项,确认目标文件确实是名为
download.gif的GIF格式图片,不要把jpg、webp等其他格式的图片强行改后缀凑数,PhotoImage原生不支持这类格式,就算路径对也会触发其他报错 - 注意文件名大小写,非Windows系统下
download.gif和download.GIF是两个完全不同的文件
- 关闭系统的「隐藏已知文件类型扩展名」选项,确认目标文件确实是名为
- 不要依赖相对路径加载图片,推荐基于脚本所在位置拼接图片绝对路径,避免工作目录变化导致的找不到文件问题。如果你的
download.gif和Python脚本放在同一个文件夹下,直接用下面的修正代码即可:
from tkinter import * import os # 自动获取当前脚本文件所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接得到图片文件的完整绝对路径 icon_full_path = os.path.join(script_dir, "download.gif") window = Tk() icon = PhotoImage(file=icon_full_path) window.iconphoto(True, icon) window.mainloop()
- 如果图片不和脚本放在同目录,直接把
icon_full_path替换成你图片的完整绝对路径即可:Windows系统路径写法类似C:\\my_project\\assets\\download.gif,macOS/Linux路径写法类似/home/xxx/my_project/assets/download.gif。
内容的提问来源于stack exchange,提问作者Surya Sankar
相关产品推荐
相关产品推荐

