From 67b54ce2b6704cc4c4f6428d1531cdf14a3b4a20 Mon Sep 17 00:00:00 2001 From: awinx Date: Wed, 15 Jan 2025 20:19:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=88=AA=E5=9B=BE=E5=92=8C?= =?UTF-8?q?=E8=B4=B4=E5=9B=BE=E4=BB=A5=E5=8F=8A=E7=AE=80=E5=8D=95=E7=BB=98?= =?UTF-8?q?=E5=9B=BE=E7=9A=84=E5=9F=BA=E6=9C=AC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pinPicture.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/pinPicture.py b/pinPicture.py index 7b7edd0..9cf2ab0 100644 --- a/pinPicture.py +++ b/pinPicture.py @@ -9,6 +9,7 @@ import threading class PinPicture(tk.Frame): def __init__(self, image, master=None): super().__init__(master) + self.pinBtn = None self.lineBtn = None self.arrowBtn = None self.rectBtn = None @@ -51,6 +52,7 @@ class PinPicture(tk.Frame): self.rectBtn = tk.Button(text='矩形', command=self.set_rect) self.arrowBtn = tk.Button(text='箭头', command=self.set_arrow) self.lineBtn = tk.Button(text='直线', command=self.set_line) + self.pinBtn = tk.Button(text='确定', command=self.pin_mode_event) self.master.bind("", self.close) self.master.bind("", self.enter_canvas) @@ -99,6 +101,13 @@ class PinPicture(tk.Frame): self.canvas.bind("", self.on_drag_start) self.canvas.bind("", self.on_drag) self.canvas.bind("", self.on_mouse_wheel) + if self.drawMode: + self.drawMode = False + self.pinBtn.pack_forget() + self.lineBtn.pack_forget() + self.arrowBtn.pack_forget() + self.penBtn.pack_forget() + self.rectBtn.pack_forget() # 鼠标进入 def enter_canvas(self, event): @@ -123,6 +132,7 @@ class PinPicture(tk.Frame): self.rectBtn.pack() self.arrowBtn.pack() self.lineBtn.pack() + self.pinBtn.pack() def set_pen(self): self.canvas.bind("", self.pen) @@ -148,7 +158,7 @@ class PinPicture(tk.Frame): self.start_draw(event) self.pad = Image.new('RGBA', self.image.size, color=(0, 0, 0, 100)) self.drawPad = ImageDraw.Draw(self.pad) - self.drawPad.rectangle((self.penX, self.penY, event.x, event.y), fill=(0,0,0,0), outline="purple") + self.drawPad.rectangle((self.penX, self.penY, event.x, event.y), fill=(0, 0, 0, 0), outline="purple") self.update_canvas_cut() self.cutX = event.x self.cutY = event.y @@ -163,6 +173,7 @@ class PinPicture(tk.Frame): self.drawPad = ImageDraw.Draw(self.pad) self.penX = event.x self.penY = event.y + # 关闭窗口 def close(self, event): self.master.destroy() @@ -247,10 +258,9 @@ class PinPicture(tk.Frame): y1 = pos[1] x2 = pos[2] y2 = pos[3] - l = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2) + l = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2) + 1 cosa = (x2 - x1) / l sina = (y2 - y1) / l - k = sina / cosa d = self.arrowSize * (sina + cosa) if (sina < cosa): xa = x2 - d @@ -280,4 +290,4 @@ class PinPicture(tk.Frame): if self.drawMode: self.image = Image.alpha_composite(self.image, self.pad) self.pad = Image.new('RGBA', self.image.size) - self.drawPad = ImageDraw.Draw(self.pad) \ No newline at end of file + self.drawPad = ImageDraw.Draw(self.pad)