2012-06-14 4 views
0

다음 코드는 일반적인 스타일 (데코레이터 사용) 대신 pyglet을 사용합니다.이 메서드는 어떻게 호출됩니까? (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을 파헤 치면됩니다.

pyglet.app.run()에 의해 사용하는 EventLoop 클래스는 on_draw 이벤트 규칙을 전달합니다. 소스에서

:

run 호출은, 운영 체제 이벤트를 처리하는 응용 프로그램 이벤트 루프를 시작 pyglet.clock.tick이 기능을 예정하고 창 내용을 업데이트 할 pyglet.window.Window.on_drawpyglet.window.Window.flip를 호출 호출 호출. 이 이벤트에

Window 클래스 subscripes : Window 서브 클래스에 의해 그래서

BaseWindow.register_event_type('on_draw') 

, 당신은 당신의 on_draw 메서드가 호출됩니다 보장합니다.

pyglet의 이벤트 시스템이 작동하는 방식의 예는 programming guide을 참조하십시오.

관련 문제