Python tkinter使用相对路径插入图片无法识别的问题及解决方法
问题根因
报错是因为运行脚本时的工作目录和你当前.py文件所在的目录不一致。VS Code默认以你打开的工作区根文件夹作为运行时的工作目录,直接写hyunju.png会到工作区根目录下找文件,而不是到.py文件所在的同级目录查找,因此触发找不到文件的报错。
可迁移的最优解决方案
用__file__内置变量动态获取当前脚本的所在目录,拼接得到图片的绝对路径,不管项目迁移到什么位置、用什么编辑器运行都能正常识别,不需要修改代码:
import tkinter import os # 先获取当前py文件的绝对路径,再提取所在的文件夹路径 current_py_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接得到图片的完整路径,自动适配Windows、macOS、Linux的路径分隔符 img_full_path = os.path.join(current_py_dir, "hyunju.png") root = tkinter.Tk() root.title("tk") canvas = tkinter.Canvas(root, width=400, height=600) canvas.pack() gazou = tkinter.PhotoImage(file=img_full_path) canvas.create_image(200, 300, image=gazou) root.mainloop()
不改代码的临时解决方案(仅适配VS Code本地运行)
如果不想修改代码,可以调整VS Code的运行配置,让运行时自动切换到py文件所在目录:
- 打开VS Code设置页面(快捷键
Ctrl+,) - 搜索配置项
python.terminal.executeInFileDir - 勾选该配置项,之后运行py文件时终端会自动切换到文件所在目录,原有相对路径写法即可正常生效
内容的提问来源于stack exchange,提问作者옵저버
相关产品推荐
相关产品推荐

