2016-07-16 13 views
0

Ich habe ein Projekt, das Python-Turtle-Modul auf einer Leinwand verwendet, und ich versuche, einen <Return> Schlüssel an eine Funktion zu binden, die die benutzerdefinierten Befehle ausgeführt, die ich gemacht habe. Dies ist ein Beispiel:Tkinter: Problem mit Bindungsfunktion

from tkinter import * 
import turtle 
root = Tk() 


mainframe=Frame(root) 
mainframe.pack(fill=BOTH) 
screen = turtle.ScrolledCanvas(mainframe) 
tt = turtle.RawTurtle(screen) 

def scrollStart(event): #these functions are for scrolling the widget 
    screen.scan_mark(event.x, event.y) 
def scrollDrag(event): 
    screen.scan_dragto(event.x, event.y, gain = 1) 

text = Text(root) 
text.pack() 

def executeCommand(): #Problem here 
    def moveForward(pixels): 
     tt.forward(pixels) 



root.bind("<Return>",executeCommand) 

root.mainloop() 

Aber wenn ich es laufen und traf moveForward(15), heißt es:

TypeError: executeCommand() takes 0 positional arguments but 1 was given 

Antwort

2

Sie benötigen ein Argument executeCommand() zu injizieren. Ändern Sie die Definition in:

def executeCommand(event): 
    def moveForward(pixels): 
     tt.forward(pixels) 
+1

Vielen Dank! Habe alles über die Event-Sache vergessen –