我正在尝试制作一个定义,包括事件(您知道,查看点击的位置)以及其他四个参数。我想打电话给它,但我不知道怎么做。我试图给它一个默认值,但没有成功,我不知道在'事件'的地方写什么
我的代码是:
def example(event,a,b,c,d):
答案 0 :(得分:0)
您的绑定函数已经在tkinter的系统中像callback(event)
一样被调用,因此您的def
头默认情况下接受一个位置参数,通常写为def callback(event):
并与{{1 }},只需将函数对象传递到some_widget.bind(sequence, callback)
并让bind
在内部传递。
话虽如此,在事件回调中有两种方法可以从外部使用其他变量,而仍然使用event
对象。
event
作为包装器传递任意lambda
:args
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