Refine coordinate selector
This commit is contained in:
@@ -50,6 +50,9 @@ class ScreenSelector:
|
|||||||
|
|
||||||
def on_release(event):
|
def on_release(event):
|
||||||
nonlocal start_x, start_y
|
nonlocal start_x, start_y
|
||||||
|
if start_x is None or start_y is None:
|
||||||
|
return
|
||||||
|
|
||||||
end_x, end_y = event.x, event.y
|
end_x, end_y = event.x, event.y
|
||||||
|
|
||||||
x1 = min(start_x, end_x)
|
x1 = min(start_x, end_x)
|
||||||
@@ -64,9 +67,18 @@ class ScreenSelector:
|
|||||||
|
|
||||||
self.on_select(monitor, (x1, y1, x2 - x1, y2 - y1))
|
self.on_select(monitor, (x1, y1, x2 - x1, y2 - y1))
|
||||||
|
|
||||||
|
def reset_selection(event):
|
||||||
|
nonlocal start_x, start_y, rect
|
||||||
|
if rect:
|
||||||
|
canvas.delete(rect)
|
||||||
|
rect = None
|
||||||
|
start_x = None
|
||||||
|
start_y = None
|
||||||
|
|
||||||
canvas.bind('<ButtonPress-1>', on_click)
|
canvas.bind('<ButtonPress-1>', on_click)
|
||||||
canvas.bind('<B1-Motion>', on_drag)
|
canvas.bind('<B1-Motion>', on_drag)
|
||||||
canvas.bind('<ButtonRelease-1>', on_release)
|
canvas.bind('<ButtonRelease-1>', on_release)
|
||||||
|
canvas.bind('<Leave>', reset_selection)
|
||||||
|
|
||||||
def _create_selection_window(self, img, geometry, scale_x=1, scale_y=1, monitor=None):
|
def _create_selection_window(self, img, geometry, scale_x=1, scale_y=1, monitor=None):
|
||||||
window = tk.Toplevel(self.root)
|
window = tk.Toplevel(self.root)
|
||||||
|
|||||||
Reference in New Issue
Block a user