tkinter用鼠标在任何方向上创建矩形

问题描述 投票:0回答:1

是否可以通过鼠标单击从右上边缘到左下边缘在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
python canvas tkinter mouse drag
1个回答
0
投票

您需要跟踪先前的鼠标单击位置,并在第二次单击鼠标时绘制矩形。然后无需注册鼠标即可恢复状态。

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()
© www.soinside.com 2019 - 2024. All rights reserved.