Warum ist meine Python-Schildkröte Form Größe verringern, wenn drücken 'Shift'

Ich versuche, eine Schildkröte in Python zu erstellen, damit ich die Größe vergrößern / verringern kann, indem ich +/- auf der Tastatur drücke

import turtle turtle.setup(700,500) wn = turtle.Screen() testing_turtle = turtle.Turtle() size = 1 def dropsize(): global size if size>1: size-=1 print(size) # To show the value of size testing_turtle.shapesize(size) def addsize(): global size if size<20: # To ensure the size of turtle is between 1 to 20 size+=1 print(size) testing_turtle.shapesize(size) wn.onkey(addsize,'+') wn.onkey(dropsize,'-') wn.listen() wn.mainloop() 

Um die '+' Taste zu betätigen, muss ich gleichzeitig 'shift' und '' '' drücken. Das Problem ist, wenn ich die Shift-Taste loslasse (oder einfach die Shift-Taste drücken), verringert sie den Größenwert um 1. Warum?

Auch wenn ich diesen Code in eine Hauptfunktion setze:

 def main(): import turtle ... ... ... wn.onkey(addsize,'+') ... ... wn.mainloop() main() 

Eine Fehlermeldung wird angezeigt:

 NameError: name 'size' is not defined 

Ich hatte 'Größe' eine globale Variable genannt, aber warum ist es jetzt nicht definiert?

One Solution collect form web for “Warum ist meine Python-Schildkröte Form Größe verringern, wenn drücken 'Shift'”

Sie müssen 'plus' und 'minus' , um die Funktionen an das Key-Release-Ereignis der + und - Taste zu binden:

 wn.onkey(addsize,'plus') wn.onkey(dropsize,'minus') 

Um die NameError Ausnahme zu lösen, platziere entweder deine Größenvariable otside deine Hauptschleife oder verwende die nonlocal Anweisung statt global :

 def addsize(): nonlocal size if size<20: # To ensure the size of turtle is between 1 to 20 size+=1 print(size) testing_turtle.shapesize(size) 
Python ist die beste Programmiersprache der Welt.