I am trying to create an image in a canvas using tkinter, but if the code to generate the image is inside a function, it doesn't seem to work.
Code to create image:
from tkinter import *
from PIL import Image, ImageTk
window=Tk()
window.title('Chess')
window.geometry("800x800+10+20")
c=Canvas(window, width=800, height=800)
pic = Image.open(r"image.png")
pic = pic.resize((80,80))
photo = ImageTk.PhotoImage(pic)
c.create_image(240, 160, image=photo,anchor="nw")
c.pack()
which works. However, if I try to create the image in a function like this:
def func():
pic = Image.open(r"image.png")
pic = pic.resize((80,80))
photo = ImageTk.PhotoImage(pic)
c.create_image(160, 160, image=photo,anchor="nw")
c.pack()
func()
no image is displayed. Does anybody know what is wrong?
from tkinter import *
from PIL import Image, ImageTk
window=Tk()
window.title('Chess')
window.geometry("800x800+10+20")
c=Canvas(window, width=800, height=800)
#image creation function
def func():
pic = Image.open(r"image.png")
pic = pic.resize((80,80))
photo = ImageTk.PhotoImage(pic)
c.create_image(160, 160, image=photo,anchor="nw")
c.pack()
#this works
pic = Image.open(r"image.png")
pic = pic.resize((80,80))
photo = ImageTk.PhotoImage(pic)
c.create_image(240, 160, image=photo,anchor="nw")
#this doesnt work
function()
c.pack()