这个方法怎么称呼? (Pyglet)

时间:2012-06-14 11:08:00

标签: python 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

1 个答案:

答案 0 :(得分:4)

您可以浏览source以找到答案。

EventLoop类(由pyglet.app.run()使用它)定期调度on_draw事件。

来自消息来源:

  

调用run开始处理应用程序事件循环   操作系统事件,调用pyglet.clock.tick来调用计划   函数和调用pyglet.window.Window.on_draw和   pyglet.window.Window.flip更新窗口内容。

Window类订阅此事件:

BaseWindow.register_event_type('on_draw')

因此,通过继承Window,您可以确保调用on_draw方法。

查看programming guide以获取pyglet事件系统如何工作的示例。