2012-06-14 4 views
0

Следующий код является альтернативой обычному стилю (используя декораторы), который использует пиглет.Как называется этот метод? (Pyglet)

Может ли кто-нибудь объяснить, как здесь вызывается метод on_draw()?

import pyglet 

class HelloWorldWindow(pyglet.window.Window): 
    def __init__(self): 
     super(HelloWorldWindow, self).__init__() 
     self.label = pyglet.text.Label('Hello, world!') 

    def on_draw(self): 
     self.clear() 
     self.label.draw() 

if __name__ == '__main__': 
    window = HelloWorldWindow() 
    pyglet.app.run() 

Код, написанный с помощью декораторов можно найти here.

ответ

4

Вы можете просто проскользнуть через source, чтобы найти ответ.

Класс EventLoop (вы используете его pyglet.app.run()) отправляет on_draw регламент.

Из источника:

Вызов run начинается цикл событий приложения, которая обрабатывает события операционной системы, вызывает pyglet.clock.tick для вызова по расписанию функции и вызовы pyglet.window.Window.on_draw и pyglet.window.Window.flip обновить содержимое окна.

В Window класс subscripes к этому событию:

BaseWindow.register_event_type('on_draw') 

Итак, подклассов Window, вы убедитесь, что ваш метод on_draw вызывается.

Посмотрите на programming guide на примере того, как работает система событий пиглета.

Смежные вопросы