2016-04-28 3 views
1

Как говорится в названии. Возможно ли прекратить прослушивание в модуле черепахи python. Пример:Python - Черепаха Stop Listening

turtle.onkey(setChar1, '1') 
turtle.onkey(setChar2, '2') 
turtle.onkey(setChar3, '3') 
turtle.listen() 

Но я могу сделать что-то вроде turtle.stopListen()?

ответ

1

Нет очевидной функциональности 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», чтобы перезапустить чертеж.