fix image view exceptions raised

This commit is contained in:
Klemek
2021-08-27 10:20:11 +02:00
parent 6b1ac3b46e
commit 80e157c86f
+27 -21
View File
@@ -18,10 +18,14 @@ class ImageView(ttk.Frame):
self.canvas.place(in_=self, anchor="c", relx=0.5, rely=0.5) self.canvas.place(in_=self, anchor="c", relx=0.5, rely=0.5)
self.canvas.bind("<Button-1>", self.click_canvas_b1) self.canvas.bind("<Button-1>", self.click_canvas_b1)
self.canvas.bind("<B1-Motion>", self.click_canvas_b1) self.canvas.bind("<B1-Motion>", self.click_canvas_b1)
self.canvas.bind("<ButtonRelease-1>", self.update) self.canvas.bind(
"<ButtonRelease-1>", lambda event: self.update(self.current_image)
)
self.canvas.bind("<Button-3>", self.click_canvas_b3) self.canvas.bind("<Button-3>", self.click_canvas_b3)
self.canvas.bind("<B3-Motion>", self.click_canvas_b3) self.canvas.bind("<B3-Motion>", self.click_canvas_b3)
self.canvas.bind("<ButtonRelease-3>", self.update) self.canvas.bind(
"<ButtonRelease-3>", lambda event: self.update(self.current_image)
)
self.canvas.bind("<MouseWheel>", self.zoom_canvas) self.canvas.bind("<MouseWheel>", self.zoom_canvas)
self.canvas.bind("<Button-4>", self.zoom_canvas_up) self.canvas.bind("<Button-4>", self.zoom_canvas_up)
@@ -41,24 +45,26 @@ class ImageView(ttk.Frame):
background="white", background="white",
) )
else: else:
self.canvas.configure( try:
width=(image.width * self.draw_scale), self.canvas.configure(
height=(image.height * self.draw_scale), width=(image.width * self.draw_scale),
background="white", height=(image.height * self.draw_scale),
) background="white",
# TODO fix / handle, "bad screen distance "??????"" )
self.canvas.delete("all") self.canvas.delete("all")
for x in range(image.width): for x in range(image.width):
for y in range(image.height): for y in range(image.height):
if image.get_pixel(x, y): if image.get_pixel(x, y):
self.canvas.create_rectangle( self.canvas.create_rectangle(
x * self.draw_scale + 1, x * self.draw_scale + 1,
y * self.draw_scale + 1, y * self.draw_scale + 1,
(x + 1) * self.draw_scale + 1, (x + 1) * self.draw_scale + 1,
(y + 1) * self.draw_scale + 1, (y + 1) * self.draw_scale + 1,
fill="black", fill="black",
outline="", outline="",
) )
except tk.TclError:
pass
self.current_image = image self.current_image = image
def click_canvas_b1(self, event): def click_canvas_b1(self, event):
@@ -67,7 +73,7 @@ class ImageView(ttk.Frame):
def click_canvas_b3(self, event): def click_canvas_b3(self, event):
self.click_canvas(False, 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: if self.current_image is None:
return return
x = int(event.x / self.draw_scale) x = int(event.x / self.draw_scale)