canvas.bind(event, handler) 如何将事件传递给事件处理程序?

How does canvas.bind(event, handler) pass event to the event handler?

在 Python 中向函数传递参数的主要方式是这样的:

def function(x):
    # function definition

function(y)

也就是说,当我们调用 function 时,我们在括号内将一个值传递给它。

但是,我使用的是 tkinter,事件 canvas.bind() 方法是这样工作的:

def event_handler(event):
    # function definition

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

也就是说,当 canvas.bind 调用方法 event_handler 时,它似乎没有像人们期望的那样将参数 'event-name' 传递给 event_handler(即通过 event_handler =19=]).相反,它只是调用 event_handler 而不带任何参数。

那么 event-handler 如何接收它应该接收的事件参数,按照它的定义?

正如您所期望的那样。在绑定中,您给出了要调用的函数的 name。当事件触发时,处理事件的内部 tkinter 代码实际上会像您一样调用它:event_handler(event).