_tkinter.TclError:图像“...”不存在

时间:2017-08-14 06:51:20

标签: python image tkinter

我知道这个问题已经被多次询问了,但我仍然无法找到问题的答案。我一直得到同样的错误,不知道如何解决它。

这是我的代码:

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

我无法弄清楚如何解决这个问题。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:5)

您应该将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

答案 1 :(得分:5)

一个快速的漏洞修复方法是为PhotoImage提供正确的母版:

i = ImageTk.PhotoImage(pathToImage, master=window)

答案 2 :(得分:0)

似乎是Anaconda-Spyder-Iphyton问题。 解决方案在这里: _tkinter.TclError: image "pyimage" doesn't exist