ImageTk.PhotoImage Crash - PullRequest
       8

ImageTk.PhotoImage Crash

7 голосов
/ 27 мая 2011

Я пытался изменить размеры изображений с помощью PIL, а затем отобразить их с помощью Tkinter, но программа зависала, и я выделил проблему во второй строке ниже:

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

А это мой импорт:

from Tkinter import * 
from PIL import Image, ImageTk 

Я прочитал, что Tk должен быть инициализирован, и я делаю это в программе, прежде чем он достигнет тех строк в программе. Так что я не знаю что это.

Я использую интерпретатор OSX и Python 2.7 в Eclipse (используя PyDev).

UPDATE:

Сообщение об ошибке на Eclipse гласит:

STACK: Stack after current is in use

Ответы [ 3 ]

0 голосов
/ 24 июля 2013

Так что это древний вопрос, но в случае, если кто-то наткнулся на это (как я только что сделал), сообщение об ошибке от Tcl (tclExecute.c).Я понятия не имею, что его вызывает, но стоит попробовать создать экземпляр Tk перед вызовом PhotoImage:

root = Tk()
image = Image.open("0.gif")
photo = ImageTk.PhotoImage(image)
0 голосов
/ 06 сентября 2014

Я использую 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, в противном случае я получаю тонкую белую рамку вокруг изображения.) Надеюсь, это помогло вам. Удачи! Ed

0 голосов
/ 28 сентября 2012

Я видел эту ошибку перед использованием tkinter. Я думаю, что это как-то связано со старой версией tkinter. Я обновил свою версию Python и версию Tkinter, и она ушла. Эта ошибка возникает, когда вы запускаете свой код на другой ОС / компьютере / платформе / версии Python? Какую версию tkinter вы используете? Некоторые поиски в Google обнаружили эти две страницы, которые описывают ту же ошибку при использовании 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 бит
питон 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

Удачи!

...