取消绘制特定区域内的所有对象 Python 图形

Undraw all objects within a certain region Python Graphics

我需要知道是否可以清除给定坐标集中的所有对象,而不管对象的名称。我目前没有任何代码,因为我已经尝试集思广益了一段时间,但一无所获。我可以举个例子,在(200,100)和(300,200)坐标内有正方形和圆圈,我如何删除这些坐标内的所有内容?

是的,这是可以做到的。首先,GraphWin 对象会跟踪在其上绘制的项目,但不会正式导出此列表。因此,您应该跟踪在 window.

上绘制的内容

您想要的项目(例如 RectangleCircle)属于 class _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()