Python3+Tkinter报错:'Image'对象无'PhotoImage'属性如何解决
错误原因
AttributeError: type object 'Image' has no attribute 'PhotoImage'报错的核心原因是PhotoImage方法不属于PIL的Image类,而是属于ImageTk模块,你大概率仅导入了Image类,未导入对应的ImageTk模块。
修复步骤
- 补充导入
ImageTk模块,在代码头部添加导入语句:
from PIL import Image, ImageTk
- 修改创建图片对象的代码行,将原写法中的
Image.PhotoImage替换为ImageTk.PhotoImage:
# 修改前错误写法 # self.photo = Image.PhotoImage(Image.open("Temp Images//" + pc[1] + ".jpg")) # 修改后正确写法 self.photo = ImageTk.PhotoImage(Image.open("Temp Images//" + pc[1] + ".jpg"))
其他注意事项
- 你当前将图片对象赋值给实例属性
self.photo的写法是正确的,不要改为局部变量,否则会被Python垃圾回收,导致图片无法正常渲染。 - 路径拼接建议使用
os.path.join避免正反斜杠混用导致的路径错误,示例:
import os img_path = os.path.join("Temp Images", f"{pc[1]}.jpg") self.photo = ImageTk.PhotoImage(Image.open(img_path))
- 你现有代码中
is.remove(file)存在语法错误:is是Python内置关键字,不能作为对象名调用,删除文件应该使用os.remove,修改后代码:
import os filelist = glob.glob(os.path.join("Temp Images", "*.jpg")) for file in filelist: os.remove(file)
内容的提问来源于stack exchange,提问作者Adamu Tokal
相关产品推荐
相关产品推荐

