Не могу вывести изображение в tkinter через pillow
import tkinter as tk
from PIL import Image, ImageTk
root = tk.Tk()
root.geometry('600x600')
canvas = tk.Canvas(width=600, height=600)
canvas.pack()
img = Image.new(mode='RGB', size=(20, 20))
img_pixels = img.load()
item_number = canvas.create_image(0, 0)
def func():
img_pixels[10, 5] = (128, 128, 128)
img_pixels[10, 8] = (256, 256, 256)
tk_img = ImageTk.PhotoImage(img.resize((1000,1000)))
canvas.itemconfigure(item_number, image = tk_img)
func()
root.mainloop()
Мне нужно заменить определённые пиксели на чёрном изображении и вывести его в окно tkinter, изменив размер(Обязательно через функцию). Так же не надо использовать классы.
Я уже прбовал делать переменные глобальными, но изображение всё равно не выводилось на экран.
Ответы (1 шт):
Автор решения: sLoNcE
→ Ссылка
Изображение не отображается на экране из-за того, что объект tk_img удаляется сборщиком мусора после завершения функции func. Чтобы решить эту проблему, вы можете сделать tk_img глобальной переменной и изменить функцию
def func():
global tk_img
img_pixels[10, 5] = (128, 128, 128)
img_pixels[10, 8] = (256, 256, 256)
tk_img = ImageTk.PhotoImage(img.resize((1000,1000)))
canvas.itemconfigure(item_number, image = tk_img)