Да, это можно сделать. Во-первых, объект 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()