Не работает вывод изображения ImageTk Python
В общем-то элементарная задача на Python, но не могу решить: нужно изменить размер изображения и вывести его в окно в качестве аргумента объекта label:
import PIL
from PIL import Image
from PIL import ImageTk
....
part_image = Image.open("test.png")
scaled_imag = part_image.resize((300, 150), Image.LANCZOS)
img = ImageTk.PhotoImage(scaled_imag)
label_pic_name = Label(window, image = img, borderwidth=2, relief="ridge")
label_pic_name.grid(row=2, column=1)
При запуске генерируется пустой объект lebel, размер которого соответствует размеру изображения, но самого изображения в нем нет.
Ответы (1 шт):
Автор решения: Павел Бурмистров
→ Ссылка
Изучил аналогичную проблему по ссылке, предоставленной @insolor в комментарии Действительно, дело оказалось в сборщике мусора и после добавления строки:
import PIL
from PIL import Image
from PIL import ImageTk
....
global img #<---Добавил вот эту строку
part_image = Image.open("test.png")
scaled_imag = part_image.resize((300, 150), Image.LANCZOS)
img = ImageTk.PhotoImage(scaled_imag)
label_pic_name = Label(window, image = img, borderwidth=2, relief="ridge")
label_pic_name.grid(row=2, column=1)
все заработало как надо.
P.S. Я натыкался на приведенный пост и добавлял аналогичную строку, но по неопытности делал это для переменной "part_image", что не дало результата.