Je sais que cette question a déjà été posée plusieurs fois, mais je n'ai toujours pas trouvé la réponse à mon problème. J'obtiens toujours la même erreur et je ne sais pas comment la résoudre.

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

Il dit que l'image existe au chemin indiqué, mais je continue à recevoir ce message d'erreur:

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

Je ne savais pas comment résoudre ce problème. Toute aide serait appréciée!

8
anonymous 14 août 2017 à 09:51

2 réponses

Meilleure réponse

Vous devez utiliser l'instance PhotoImage comme valeur image. De plus, vous devez conserver la référence de votre 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
6
Lafexlos 14 août 2017 à 07:50

Une solution de piratage rapide consiste à fournir à PhotoImage le bon master:

i = ImageTk.PhotoImage(pathToImage, master=window)
0
Pedro Carlos 20 févr. 2020 à 04:43