from tkinter import * from PIL import ImageTk, Image # class Content(Frame): # def __init__(self, master, *pargs): # Frame.__init__(self, master, *pargs) # # def set(self, image_file): # self.image = Image.open(image_file) # self.img_copy= self.image.copy() # self.background_image = ImageTk.PhotoImage(self.image) # # self.background = Label(self, image=self.background_image) # self.background.pack(fill=BOTH, expand=YES) # self.background.bind('', self._resize_image) # self.background.bind('', self.destruct) # # def destruct(self, *pargs): # self.destroy() # # def _resize_image(self, event): # self.image = self.img_copy.resize((event.width, event.height)) # self.background_image = ImageTk.PhotoImage(self.image) # self.background.configure(image=self.background_image) class Content(Canvas): def __init__(self, master, *pargs): Canvas.__init__(self, master, *pargs) def set(self, image_file): self.image = Image.open(image_file) self.img_copy= self.image.copy() self.background_image = ImageTk.PhotoImage(self.image) self.image = self.create_image(0, 0, self.background_image) self.image.bind('', self._resize_image) self.image.bind('', self.destruct) def destruct(self, *pargs): self.destroy() def _resize_image(self, event): self.image = self.img_copy.resize((event.width, event.height)) self.background_image = ImageTk.PhotoImage(self.image) self.background.itemconfigure(self.image, image=self.background_image) root = Tk() root.geometry('800x450') file = "assets/most-accurate-test.png" image = ImageTk.PhotoImage(Image.open(file)) canvas = Canvas(root) canvas.pack(fill='both', expand=TRUE) image_id = canvas.create_image(0, 0, image=image, anchor='nw') def resizer(e): global image1, resized_image, new_image image1 = Image.open(file) resized_image = image1.resize((e.width, e.height), Image.Resampling.LANCZOS) new_image = ImageTk.PhotoImage(resized_image) canvas.itemconfigure(image_id, image=new_image) def change(e): global image1, resized_image, new_image, canvas, image, file file = "assets/types.png" image = ImageTk.PhotoImage(Image.open(file)) print(canvas.winfo_width(), canvas.winfo_height()) image1 = Image.open(file) resized_image = image1.resize((canvas.winfo_width(), canvas.winfo_height()), Image.Resampling.LANCZOS) new_image = ImageTk.PhotoImage(resized_image) canvas.itemconfigure(image_id, image=new_image) canvas.bind('', resizer) canvas.bind('', change) # content = Content(root) # content.set(file) # content.pack() # exit() root.mainloop()