tkinter PhotoImage 不存在?

And*_*y G 5 python tkinter

from tkinter import *

root = Tk()

photo = PhotoImage(file='blueface.png')
label = Label(root, image=photo)
label.pack()

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

图像 face.png 与此 .py 脚本位于同一目录中,但是当我运行它时,出现以下错误:

 line 5, in <module>
    photo = PhotoImage(file='blueface.png')
 line 3539, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
 line 3495, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "face.png": no such file or directory
Run Code Online (Sandbox Code Playgroud)

Ofe*_*dan 4

图像与脚本位于同一文件夹中并不重要,当您在没有路径的情况下调用该文件时,Python 会假设它与您启动脚本时正在处理的文件夹位于同一文件夹中。例如,如果脚本和图像都在temp文件夹中,并且您像这样启动脚本:

python temp/script.py
Run Code Online (Sandbox Code Playgroud)

解释器没有意识到它blueface.png也在temp您所在的文件夹中,在本例中是父文件夹中查找它temp

您应该做的是使用绝对路径,或者__file__首先使用 来获取完整的脚本地址。例如:

photo = PhotoImage(file='/absolute/path/to/image/blueface.png')
Run Code Online (Sandbox Code Playgroud)

或者使用当前脚本的位置来构建图像的路径:

import os
base_folder = os.path.dirname(__file__)
image_path = os.path.join(base_folder, 'blueface.png')
photo = PhotoImage(file=image_path)
Run Code Online (Sandbox Code Playgroud)