Нет очевидной функциональности unlisten()
, даже если вы опуститесь до основания tkinter. Надеюсь, кто-то придумает один для вас.
Путь пакет черепахи, кажется, хочет, чтобы вы сделать это:
def keys_activate():
turtle.onkey(setChar1, '1')
turtle.onkey(setChar2, '2')
turtle.onkey(setChar3, '3')
turtle.listen()
def keys_deactivate():
turtle.onkey(None, '1')
turtle.onkey(None, '2')
turtle.onkey(None, '3')
Другой подход должен был бы определить глобальную listening
переменную, что ваши ключевые обработчики проверяются, чтобы убедиться, что они должны быть активными или нет. Что-то вроде:
from turtle import *
listening = False
def listen(listen_original=listen):
global listening
listen_original()
listening = True
def unlisten():
global listening
listening = False
def setChar1():
if not listening:
return
reset()
for i in range(36):
forward(200)
left(170)
def setChar2():
unlisten()
def setChar3():
listen()
onkey(setChar1, '1')
onkey(setChar2, '2')
onkey(setChar3, '3')
listen()
done()
Нажатие '1' будет медленно рисовать фигуру; нажатие «1» снова сбросит экран и возобновит рисование фигуры. Нажатие «2» отключит эту функциональность, так что нажатие «1» ничего не делает. Нажатие «3» вернет ключи, чтобы снова нажать «1», чтобы перезапустить чертеж.