2016-04-28 9 views
1

Wie es im Titel sagt. Ist es möglich, das Python-Turtle-Modul nicht mehr zu hören? Beispiel:Python - Turtle Stop Listening

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

Aber kann ich so etwas wie turtle.stopListen()?

Antwort

1

Es gibt keine offensichtliche unlisten() Funktionalität, auch wenn Sie auf die Tkinter-Grundlagen zurückgreifen. Ich hoffe, dass jemand einen für dich hat.

Die Art und Weise das Schildkröte Paket, das Sie es tun scheint zu wollen, ist:

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') 

Ein weiterer Ansatz ein global listening Variable, die Ihre Schlüssel-Handler zu sehen geprüft zu definieren wäre, wenn sie aktiv ist oder nicht sein sollte. Etwas wie:

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() 

Drücken Sie '1' wird langsam eine Figur zeichnen; Durch erneutes Drücken von '1' wird der Bildschirm zurückgesetzt und die Figur neu gezeichnet. Durch Drücken von "2" wird diese Funktion ausgeschaltet, so dass das Drücken von "1" nichts bewirkt. Durch Drücken von '3' werden die Tasten wieder eingeschaltet, so dass Sie erneut '1' drücken können, um die Zeichnung neu zu starten.