Filedialog python的缩略图问题

我遇到了一个问题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 callback

Traceback (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 fileDialog

self.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 getmodebase

return ImageMode.getmode(mode).basemode

  File "C:\Users\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PIL\ImageMode.py", line 56, in getmode

return _modes[mode]


隔江千里
浏览 238回答 1
1回答

胡说叔叔

尝试print(type(self.img), type(self.thumbNail_img))&nbsp;你看<class 'PIL.JpegImagePlugin.JpegImageFile'> <class 'NoneType'>这意味着比self.img是Image但是self.thumbNail_imgNonethumbnail()不创建新图像。它更改原始图像self.img并返回None。它有效"in-place"。文档:Image.thumbnail所以你必须使用self.img来显示它&nbsp;self.img = Image.open(self.filename)&nbsp;self.img.thumbnail((512, 512))&nbsp;self.photo = ImageTk.PhotoImage(self.img)如果您需要原始图像,那么您.copy()可以&nbsp;self.img = Image.open(self.filename)&nbsp;self.thumbNail_img = self.img.copy()&nbsp;self.thumbNail_img.thumbnail((512, 512))&nbsp;self.photo = ImageTk.PhotoImage(self.thumbNail_img)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go