2011-03-16 58 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是裝飾者。裝飾者可以簡單地通過使用@添加。