2016-05-01 8 views
-2

Ich möchte mit meinem Programm die Pensize von Pythons Turtle erhöhen, wenn die Page UP Taste gedrückt wird. Ich habe versucht, die folgenden:TypeError: nicht unterstützte Operandentypen für + =: 'method' und 'int'

#!/usr/bin/env python3 
import turtle 
wn=turtle.Screen() 
wn.title('Control using first letter of desired action') 
py=turtle.Turtle() 
py.color('blue') 
size=1 
def front(): 
    py.fd(90) 
def back(): 
    py.bk(90) 
def right(): 
    py.rt(45) 
def left(): 
    py.lt(45) 
def increasize(): 
    global size 
    while size>=1 and size<=20: 
     py.pensize+=1 
def decreasize(): 
    global size 
    while size>=1 and size<=20: 
     py.pensize-=1 
wn.onkey(front,'w') 
wn.onkey(back,'s') 
wn.onkey(right,'d') 
wn.onkey(left,'a') 
wn.onkey(increasize,'Prior') 
wn.onkey(decreasize,'Next') 
wn.listen() 
wn.mainloop() 

Aber es gibt einen Fehler. Vollständige Zurückverfolgungs:

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "c:\program files\python3\lib\tkinter\__init__.py", line 1549, in __call__ 
    return self.func(*args) 
    File "c:\program files\python3\lib\turtle.py", line 686, in eventfun 
    fun() 
    File "D:\Python\draw_straight_key.py", line 19, in increasize 
    py.pensize+=1 
TypeError: unsupported operand type(s) for +=: 'method' and 'int' 
Exception in Tkinter callback 
Traceback (most recent call last): 
    File "c:\program files\python3\lib\tkinter\__init__.py", line 1549, in __call__ 
    return self.func(*args) 
    File "c:\program files\python3\lib\turtle.py", line 686, in eventfun 
    fun() 
    File "D:\Python\draw_straight_key.py", line 23, in decreasize 
    py.pensize-=1 
TypeError: unsupported operand type(s) for -=: 'method' and 'int' 
+0

Bitte setzen Sie Ihren Code in den Körper Ihrer Frage. – MattDMo

+0

Bitte geben Sie auch den ** Volltext ** des Fehlers oder des Tracebacks an. – MattDMo

+0

pensize ist eine Methode, keine Variable. Sehen Sie sich die [docs] (https://docs.python.org/2/library/turtle.html#turtle.pensize) an und beheben Sie sie selbst. – Natecat

Antwort

0

Sie müssen die anrufen Pensize-Methode mit der neuen Größe. Eine Referenzmethode kann nicht auf

Zum Beispiel hinzugefügt werden, in increasize

size += 1 
py.pensize(size) 

Auch wenn Sie die Größe wollen immer eine Größe (20) sein, dann die while-Schleife ändern, um ein if-Anweisung

while size>=1 and size<=20: 
+0

Dank ich habe es. –