Документация для clear()
понятна:
Сброс TurtleScreen в исходное состояние: белый фон, без фонового изображения, без привязок к событиям и трассировки.
Все ваши привязки событий (т.е. ondrag()
) отменяются clear()
, поэтому вы должны повторить их.
ОБНОВЛЕНИЕ
Метод clear()
на экране(aka clearscreen()
fuction) является более серьезным, чем может поверить документация.Кажется, он уничтожает все созданные пользователем черепахи и сбрасывает черепаху по умолчанию в исходное состояние.
Метод .reset()
на экране не намного лучше - вы сохраняете своих черепах, но они теряют все атрибуты, которые выset.
В качестве альтернативы очистке или сбросу экрана я предлагаю вам попросить черепах clear()
очистить любой рисунок, если перо не работает, и затем переместить их в новые места или home()
.
from turtle import Screen, Turtle
def drag(x, y):
default.ondrag(None) # disable handler inside handler
default.goto(x, y)
if default.distance(pickaxe) < 10:
wn.bgpic('TrumpTowersInside.gif')
pickaxe.hideturtle() # should move it elsewhere
default.ondrag(drag)
wn = Screen()
wn.setup(500, 500)
wn.bgpic('TrumpTowers.gif')
default = Turtle('turtle', visible=False)
default.color('red')
default.shapesize(2)
default.penup()
default.left(90)
default.backward(50)
default.showturtle()
default.ondrag(drag)
pickaxe = Turtle('turtle', visible=False)
pickaxe.color('green')
pickaxe.penup()
pickaxe.forward(10)
pickaxe.left(90)
pickaxe.forward(50)
pickaxe.showturtle()
wn.mainloop()