是否可以通过鼠标单击从右上边缘到左下边缘在tkinter画布上绘制矩形(与传统方式不同?这是参考creating rect with mouse drag
def on_button_press(self, event):
# save mouse drag start position
self.start_x = event.x
self.start_y = event.y
# create rectangle if not yet exist
#if not self.rect:
self.rect = self.canvas.create_rectangle(self.x, self.y, 1, 1, fill="black")
def on_move_press(self, event):
curX, curY = (event.x, event.y)
# expand rectangle as you drag the mouse
self.canvas.coords(self.rect, self.start_x, self.start_y, curX, curY)
def on_button_release(self, event):
pass
您需要跟踪先前的鼠标单击位置,并在第二次单击鼠标时绘制矩形。然后无需注册鼠标即可恢复状态。
import tkinter as tk
def draw_rect(event):
global anchor
pos = event.x, event.y
if anchor is None:
anchor = pos
return
canvas.create_rectangle(anchor, pos, fill='', outline='black')
anchor = None
root = tk.Tk()
canvas = tk.Canvas(root, bg='cyan')
canvas.pack(expand=True, fill=tk.BOTH)
anchor = None
canvas.bind('<ButtonRelease-1>', draw_rect)
root.mainloop()