为了账号安全,请及时绑定邮箱和手机立即绑定

Filedialog python的缩略图问题

Filedialog python的缩略图问题

Go
隔江千里 2022-01-18 13:46:49
我遇到了一个问题self.photo = ImageTk.PhotoImage(self.resized_img)。它告诉我AttributeError: 'PhotoImage' object has no attribute '_PhotoImage__photo'。我用缩略图功能做错了吗? def fileDialog(self):    self.filename = filedialog.askopenfilename(title="Select file")    self.label = ttk.Label(self.labelFrame, text = "")    self.label.grid(column = 1, row = 2)    self.label.configure(text=os.path.basename(self.filename))    self.img = Image.open(self.filename)    self.thumbNail_img = self.img.thumbnail((512, 512))    self.photo = ImageTk.PhotoImage(self.thumbNail_img)    self.display = ttk.Label(image=self.photo)    self.display.place(relx=0.10, rely=0.10)错误:Exception in Tkinter callbackTraceback (most recent call last):File "C:\Users\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__return self.func(*args) File "gui.py", line 44, in fileDialogself.photo = ImageTk.PhotoImage(self.resized_img)  File "C:\Users\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PIL\ImageTk.py", line 113, in __init__mode = Image.getmodebase(mode)  File "C:\Users\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PIL\Image.py", line 326, in getmodebasereturn ImageMode.getmode(mode).basemode  File "C:\Users\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PIL\ImageMode.py", line 56, in getmodereturn _modes[mode]
查看完整描述

1 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

尝试


print(type(self.img), type(self.thumbNail_img)) 

你看


<class 'PIL.JpegImagePlugin.JpegImageFile'> <class 'NoneType'>

这意味着比self.img是Image但是self.thumbNail_imgNone


thumbnail()不创建新图像。它更改原始图像self.img并返回None。

它有效"in-place"。文档:Image.thumbnail


所以你必须使用self.img来显示它


 self.img = Image.open(self.filename)


 self.img.thumbnail((512, 512))


 self.photo = ImageTk.PhotoImage(self.img)

如果您需要原始图像,那么您.copy()可以


 self.img = Image.open(self.filename)


 self.thumbNail_img = self.img.copy()


 self.thumbNail_img.thumbnail((512, 512))


 self.photo = ImageTk.PhotoImage(self.thumbNail_img)


查看完整回答
反对 回复 2022-01-18
  • 1 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信