ImageTk.PhotoImage崩溃

时间:2011-05-27 02:15:56

标签: python tkinter python-imaging-library

我一直在尝试使用PIL调整图像大小,然后使用Tkinter显示它们,但程序崩溃了,我已将问题隔离到下面的第二行:

image = Image.open("0.gif")
photo = ImageTk.PhotoImage(image)

这是我的进口商品:

from Tkinter import * 
from PIL import Image, ImageTk 

我已经读过Tk必须初始化并且我在程序中到达程序中的那些行之前执行此操作。所以我不知道它是什么。

我在eclipse上运行OSX和python 2.7解释器(使用PyDev)。

更新:

eclipse上的错误消息说:

STACK: Stack after current is in use

3 个答案:

答案 0 :(得分:0)

在使用tkinter之前我已经看到了这个错误。我认为这与旧版本的tkinter有关。我更新了我的python版本和tkinter版本,它就消失了。当您在不同的OS /计算机/平台/ Python版本上运行代码时,是否会发生此错误?你使用的是什么版本的tkinter?一些谷歌搜索显示这两个页面描述了使用tkinter时的相同错误......

http://osdir.com/ml/python.leo.general/2008-03/msg00060.html
http://fornax.phys.unm.edu/lwa/trac/ticket/3

我看不到你的所有代码,但我打赌你的代码没有任何问题。以下代码对我有用......

from Tkinter import * 
from PIL import Image, ImageTk 

# resize image with PIL
im = Image.open('path to gif')
resized_im = im.resize((400,400,),Image.ANTIALIAS)

# display image in tkinter window
window = Tk()
tk_im = ImageTk.PhotoImage(resized_im)
window.geometry('%dx%d' % (resized_im.size[0],resized_im.size[1]))
label_image = Label(window, image=tk_im)
label_image.place(x=0,y=0,width=resized_im.size[0],height=resized_im.size[1])
window.mainloop()

使用....
ubuntu 10.04 64位
python 2.6.5
python-imaging-tk 1.1.7
python-tk 2.6.5(使用版本8.5.0的tkinter)
python成像库(PIL)1.1.7
日食3.7.1
pydev 2.5.0.2012050419

祝你好运!

答案 1 :(得分:0)

我一直在使用Tk,PIL和为当前项目调整图片大小,以下代码对我来说很好。

#Imports
from Tkinter import * 
from PIL import Image, ImageTk 

#Create Tk instance
root = Tk()

#Open image and resize
image = Image.open("path/to/image/file").resize((400,400), Image.ANTIALIAS)
photo = ImageTk.PhotoImage(image)

之后,我发现在tkinter中将图像显示为标签是最容易的。

image_label = Label(root, width = 400, height = 400, image = photo bd = 0)

(我喜欢bd = 0,否则我会在图像周围留下一个薄薄的白色边框。) 希望这对你有所帮助。祝好运! 编

答案 2 :(得分:-1)

所以这是一个古老的问题,但万一有人偶然发现(就像我刚才那样),错误信息来自Tcl(tclExecute.c)。我不知道是什么触发了它,但有一点值得尝试的是在调用Tk之前创建一个PhotoImage实例:

root = Tk()
image = Image.open("0.gif")
photo = ImageTk.PhotoImage(image)