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) 
  • Как переместить все окно в место на экране (Tkinter, Python3)
  • Python: как получить обновленный текст ввода для использования в команде, привязанной к нему?
  • Понимание родителя и контроллера в Tkinter __init__
  • Python - изображение не нарисовано на холсте
  • Добавление или удаление виджетов tkinter из других модулей
  • Нужен графический интерфейс Python / tkinter для динамического обновления самого себя (для многоязычного графического интерфейса)
  • Как периодически запускать функцию в python
  • Tkinter Изменить размер текста
  • Python - лучший язык программирования в мире.