Удалить все объекты в пределах определенного региона Python Графика - PullRequest
0 голосов
/ 08 января 2020

Мне нужно было знать, возможно ли очистить все объекты в заданном наборе координат независимо от имени объекта. У меня нет никакого кода для этого в настоящее время, поскольку я пытался провести мозговой штурм некоторое время сейчас, но ничего не придумал. Пример, который я могу привести, состоит в том, что в координатах (200,100) и (300,200) есть квадраты и круги, как бы я удалил все в этих координатах?

1 Ответ

0 голосов
/ 08 января 2020

Да, это можно сделать. Во-первых, объект GraphWin отслеживает нарисованные на нем элементы, но официально не экспортирует этот список. Поэтому вы должны следить за тем, что вы рисуете в окне.

Элементы, которые вы хотите (например, Rectangle и Circle), принадлежат классу _BBox, который имеет метод getCenter(), который вы можете использовать манипулировать объектами в пределах ваших границ:

from random import randrange
from graphics import *

win = GraphWin("My Example", 400, 400)

boundary = Rectangle(Point(200, 100), Point(300, 200))
boundary.setOutline('blue')
boundary.draw(win)

graphics = []

for _ in range(150):
    circle = Circle(Point(randrange(400), randrange(400)), 5)
    circle.setOutline('green')
    circle.draw(win)

    graphics.append(circle)

    x, y = randrange(400), randrange(400)
    rectangle = Rectangle(Point(x, y), Point(x + 10, y + 10))
    rectangle.setOutline('orange')
    rectangle.draw(win)

    graphics.append(rectangle)

for graphic in graphics:
    center = graphic.getCenter()

    if 200 < center.getX() < 300 and 100 < center.getY() < 200:
        graphic.setFill('red')
        graphic.undraw()

win.getMouse()
win.close()
...