ImageTk.PhotoImage Crash

Я пытаюсь изменить размер изображений с помощью 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).

ОБНОВИТЬ:

Сообщение об ошибке на eclipse говорит:

 STACK: Stack after current is in use 

3 Solutions collect form web for “ImageTk.PhotoImage Crash”

Я видел эту ошибку перед использованием tkinter. Я думаю, что это как-то связано со старой версией tkinter. Я обновил мою версию python и версию tkinter, и она ушла. Происходит ли эта ошибка при запуске вашего кода на другой ОС / компьютере / платформе / версии 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
eclipse 3.7.1
pydev 2.5.0.2012050419

Удачи!

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

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

 root = Tk() image = Image.open("0.gif") photo = ImageTk.PhotoImage(image) 
  • Включить данные изображения в Python, возможно?
  • закрытие tkmessagebox через некоторое время в python
  • Предоставление команды во встроенном терминале
  • В чем разница между «обновлением» и «update_idletasks»?
  • Python Tkinter: обновить изображение в холсте
  • Как новичок, куда мне идти, если я хочу создать небольшую программу GUI?
  • Какой виджет вы используете для таблицы Excel в tkinter?
  • TKinter RadioButton не работает
  • Python - лучший язык программирования в мире.