取消绘制特定区域内的所有对象 Python 图形
Undraw all objects within a certain region Python Graphics
我需要知道是否可以清除给定坐标集中的所有对象,而不管对象的名称。我目前没有任何代码,因为我已经尝试集思广益了一段时间,但一无所获。我可以举个例子,在(200,100)和(300,200)坐标内有正方形和圆圈,我如何删除这些坐标内的所有内容?
是的,这是可以做到的。首先,GraphWin
对象会跟踪在其上绘制的项目,但不会正式导出此列表。因此,您应该跟踪在 window.
上绘制的内容
您想要的项目(例如 Rectangle
和 Circle
)属于 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()
我需要知道是否可以清除给定坐标集中的所有对象,而不管对象的名称。我目前没有任何代码,因为我已经尝试集思广益了一段时间,但一无所获。我可以举个例子,在(200,100)和(300,200)坐标内有正方形和圆圈,我如何删除这些坐标内的所有内容?
是的,这是可以做到的。首先,GraphWin
对象会跟踪在其上绘制的项目,但不会正式导出此列表。因此,您应该跟踪在 window.
您想要的项目(例如 Rectangle
和 Circle
)属于 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()