Как нарисовать прямоугольник с питоном? - PullRequest
0 голосов
/ 13 июня 2019

Я хочу нарисовать прямоугольник на изображении Я использовал этот код:

import Tkinter as tk

class draw_rect(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.x = self.y = 0
        self.canvas = tk.Canvas(self, width=400, height=400,cursor="cross")
        self.canvas.pack(side="top", fill="both", expand=True)
        self.canvas.bind("<ButtonPress-1>", self.on_button_press)
        self.canvas.bind("<ButtonRelease-1>",         self.on_button_release)

    def on_button_press(self, event):
        self.x = event.x
        self.y = event.y

    def on_button_release(self, event):
        x0,y0 = (self.x, self.y)
        x1,y1 = (event.x, event.y)

        self.canvas.create_rectangle(x0,y0,x1,y1, fill="RED")

if __name__ == "__main__":
    app = draw_rect()
    app.mainloop()

проблема в том, что он рисует более одного прямоугольника, я хочу, чтобы я рисовал новый прямоугольник, предыдущий удален. Еще одна вещь, которую я хочу сохранить координаты прямоугольника (x0, x1, y0, y1), чтобы я мог использовать его позже. Спасибо.

1 Ответ

1 голос
/ 13 июня 2019

Вы можете использовать canvas.delete("all") для очистки, и координаты уже сохранены в переменной.

def on_button_press(self, event):
    self.x = event.x
    self.y = event.y
    self.canvas.delete("all")

def on_button_release(self, event):
    x0,y0 = (self.x, self.y)
    x1,y1 = (event.x, event.y)

    self.canvas.create_rectangle(x0,y0,x1,y1, fill="RED")

    print(x0,y0,x1,y1)  # You can write to file, or store as lists or do w/e with these
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...