在定义的参数中使用事件

时间:2014-12-14 16:07:13

标签: python events tkinter definition

我正在尝试制作一个定义,包括事件(您知道,查看点击的位置)以及其他四个参数。我想打电话给它,但我不知道怎么做。我试图给它一个默认值,但没有成功,我不知道在'事件'的地方写什么

我的代码是:

def example(event,a,b,c,d):

1 个答案:

答案 0 :(得分:0)

您的绑定函数已经在tkinter的系统中像callback(event)一样被调用,因此您的def头默认情况下接受一个位置参数,通常写为def callback(event):并与{{1 }},只需将函数对象传递到some_widget.bind(sequence, callback)并让bind在内部传递。

话虽如此,在事件回调中有两种方法可以从外部使用其他变量,而仍然使用event对象。

  1. 使用event作为包装器传递任意lambda
args
  1. 使用a, b, c, d = some_bbox def on_click(event, a, b, c, d): print(event.x, event.y, a, b, c, d) # do the rest of your processing some_widget.bind("<Button-1>", lambda event, a=a, b=b, c=c, d=d: on_click(event, a, b, c, d) global关键字来指定要从外部范围获取的变量:
nonlocal

a, b, c, d = some_bbox def on_click(event): # use global if a, b, c, and d exist at the module level global a, b, c, d # use nonlocal if a, b, c, and d exist within the scope of another function # nonlocal a, b, c, d print(event.x, event.y, a, b, c, d) # do the rest of your processing some_widget.bind("<Button-1>", on_click) python 3.8