この質問はすでに何度か尋ねられたことは知っていますが、それでも私の問題に対する答えを見つけることができませんでした。同じエラーが発生し続け、解決方法がわかりません。
これは私のコードです:
from Tkinter import *
from PIL import Image, ImageTk
import os
window = Tk()
i = Image.open(pathToImage)
if os.path.isfile(pathToImage):
print 'image exists'
else:
print 'image does not exits'
label=Label(window, image=i)
label.pack()
window.mainloop()
指定されたパスに画像が存在することを示していますが、次のエラーメッセージが表示され続けます。
Traceback (most recent call last):
File "ImageTest.py", line 31, in <module>
label=Label(window, image=i)
File "C:\Users\username\Anaconda2\lib\lib-tk\Tkinter.py", line 2597, in __init__
Widget.__init__(self, master, 'label', cnf, kw)
File "C:\Users\username\Anaconda2\lib\lib-tk\Tkinter.py", line 2096, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: image "<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=640x480 at 0x36DF278>" doesn't exist
この問題の解決方法がわからなかった。何か助けていただければ幸いです!
PhotoImage
インスタンスをimage
値として使用する必要があります。また、画像の参照を保持する必要があります。
im = Image.open(pathToImage)
ph = ImageTk.PhotoImage(im)
label = Label(window, image=ph)
label.image=ph #need to keep the reference of your image to avoid garbage collection
簡単な修正は、PhotoImageに正しいマスターを提供することです。
i = ImageTk.PhotoImage(pathToImage, master=window)