2016-07-18 16 views
0

der primäre Weg Argumente einer Funktion in Python der Weitergabe ist das:Wie übergibt canvas.bind (event, handler) ein Ereignis an den Event-Handler?

def function(x): 
    # function definition 

function(y) 

Das heißt, wenn wir function nennen wir einen Wert zu übergeben in Klammern.

Aber ich bin mit tkinter, und die Ereignisse canvas.bind() Methode funktioniert so:

def event_handler(event): 
    # function definition 

canvas.bind('event-name', event_handler) 

Das heißt, wenn canvas.bind die Methode aufruft event_handler, es scheinbar nicht das Argument 'event-name' zu event_handler nicht passieren, wie man erwarten würde, (zB indem Sie event_handler('event-name') tun). Stattdessen ruft es nur event_handler ohne Argumente auf.

Wie also erhält event-handler das Ereignisargument, das es erhalten soll, geht durch seine Definition?

Antwort

1

Es ist genau so, wie Sie es erwarten. In der Bindung geben Sie den Namen der Funktion zu nennen. Wenn das Ereignis ausgelöst wird, ruft der interne tkinter-Code, der das Ereignis verarbeitet, es tatsächlich so auf, wie Sie es tun würden: event_handler(event).