Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

_tkinter.TclError: image "..." doesn't exist

I know that this question has already been asked several times, but I still couldn't figure out the answer to my problem. I keep getting the same error and don't know how to solve it.

This is my code:

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()

It says that the image exists at the indicated path, but I keep getting this error message:

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

I could not figure out how to solve this problem. Any help would be appreciated!

like image 607
anonymous Avatar asked Aug 14 '17 06:08

anonymous


2 Answers

A quick hacky fix is to provide the PhotoImage with the correct master:

i = ImageTk.PhotoImage(pathToImage, master=window)
like image 98
Pedro Carlos Avatar answered Nov 04 '22 16:11

Pedro Carlos


You should use PhotoImage instance as image value. Also, you need to keep the reference of your 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
like image 44
Lafexlos Avatar answered Nov 04 '22 17:11

Lafexlos