-1
我刚刚开始玩pyglet。这是一个函数装饰器?
在first demo,我跑这样翻过代码:
window = pyglet.window.Window()
@window.event
def on_draw():
window.clear()
label.draw()
我明白,这注册一个事件处理程序,但我不知道怎么样。
如何在没有'@'语法的情况下重写?
我刚刚开始玩pyglet。这是一个函数装饰器?
在first demo,我跑这样翻过代码:
window = pyglet.window.Window()
@window.event
def on_draw():
window.clear()
label.draw()
我明白,这注册一个事件处理程序,但我不知道怎么样。
如何在没有'@'语法的情况下重写?
它被称为“事件装饰器”。是的,你可以只写
window.on_draw = on_draw
的 “高清on_draw()” 的定义后,不使用装饰;但如果窗口已经有一个on_draw,它会被覆盖。装饰器将“连锁”多个事件处理程序。
根据docs,Window.event
是装饰者。装饰者可以简单地通过使用@
添加。
更重要的是,你可以写'on_draw = window.event(on_draw)'来达到同样的效果。 – detly 2011-03-16 05:36:49