-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