2011-03-16 56 views
-1

我刚刚开始玩pyglet。这是一个函数装饰器?

first demo,我跑这样翻过代码:

window = pyglet.window.Window() 

@window.event 
def on_draw(): 
    window.clear() 
    label.draw() 

我明白,这注册一个事件处理程序,但我不知道怎么样。

如何在没有'@'语法的情况下重写?

回答

3

它被称为“事件装饰器”。是的,你可以只写

window.on_draw = on_draw

的 “高清on_draw()” 的定义后,不使用装饰;但如果窗口已经有一个on_draw,它会被覆盖。装饰器将“连锁”多个事件处理程序。

+2

更重要的是,你可以写'on_draw = window.event(on_draw)'来达到同样的效果。 – detly 2011-03-16 05:36:49

0

根据docsWindow.event是装饰者。装饰者可以简单地通过使用@添加。