以下代码是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。
答案 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事件系统如何工作的示例。