diff --git a/watchy-image-editor/image_view.py b/watchy-image-editor/image_view.py index 821d00e..f9a840c 100644 --- a/watchy-image-editor/image_view.py +++ b/watchy-image-editor/image_view.py @@ -18,10 +18,14 @@ class ImageView(ttk.Frame): self.canvas.place(in_=self, anchor="c", relx=0.5, rely=0.5) self.canvas.bind("", self.click_canvas_b1) self.canvas.bind("", self.click_canvas_b1) - self.canvas.bind("", self.update) + self.canvas.bind( + "", lambda event: self.update(self.current_image) + ) self.canvas.bind("", self.click_canvas_b3) self.canvas.bind("", self.click_canvas_b3) - self.canvas.bind("", self.update) + self.canvas.bind( + "", lambda event: self.update(self.current_image) + ) self.canvas.bind("", self.zoom_canvas) self.canvas.bind("", self.zoom_canvas_up) @@ -41,24 +45,26 @@ class ImageView(ttk.Frame): background="white", ) else: - self.canvas.configure( - width=(image.width * self.draw_scale), - height=(image.height * self.draw_scale), - background="white", - ) - # TODO fix / handle, "bad screen distance "??????"" - self.canvas.delete("all") - for x in range(image.width): - for y in range(image.height): - if image.get_pixel(x, y): - self.canvas.create_rectangle( - x * self.draw_scale + 1, - y * self.draw_scale + 1, - (x + 1) * self.draw_scale + 1, - (y + 1) * self.draw_scale + 1, - fill="black", - outline="", - ) + try: + self.canvas.configure( + width=(image.width * self.draw_scale), + height=(image.height * self.draw_scale), + background="white", + ) + self.canvas.delete("all") + for x in range(image.width): + for y in range(image.height): + if image.get_pixel(x, y): + self.canvas.create_rectangle( + x * self.draw_scale + 1, + y * self.draw_scale + 1, + (x + 1) * self.draw_scale + 1, + (y + 1) * self.draw_scale + 1, + fill="black", + outline="", + ) + except tk.TclError: + pass self.current_image = image def click_canvas_b1(self, event): @@ -67,7 +73,7 @@ class ImageView(ttk.Frame): def click_canvas_b3(self, event): self.click_canvas(False, event) - def click_canvas(self, value, event): + def click_canvas(self, value: bool, event): if self.current_image is None: return x = int(event.x / self.draw_scale)