[英]Does not using a decorator in pyglet cause problems?
我在 pyglet 中编写了一个简单的代码来在屏幕上绘制一个矩形,但是当我使用正确的代码格式时,什么也没有发生,但也没有抛出任何错误
window=pyglet.window.Window()
rect=pyglet.shapes.Shapes(0,0,50,50,color=(255,255,255))
@window.event
def draw_():
rect.draw()
pyglet.app.run()
此代码只会导致黑屏。 矩形未打印,但如果我使用此代码代替
window=pyglet.window.Window()
rect=pyglet.shapes.Shapes(0,0,50,50,color=(255,255,255))
def draw_():
rect.draw()
pyglet.app.run()
矩形被打印出来。 由于第二个代码不是在 pyglet 中绘制形状的标准方法,我想知道这样做是否有任何问题(性能问题、故障等)如果第二个代码错误,我应该怎么做?
重绘事件是on_draw()
而不是draw_
:
@window.event
def on_draw():
rect.draw()
如果您不使用装饰器,则默认事件处理程序将被完全替换:
def on_draw(): rect.draw()
当您使用装饰时,会添加一个额外的事件处理程序。 因此保留默认处理程序:
@window.event def on_draw(): rect.draw()
[...] 最简单的方法是将事件处理程序直接附加到 object 上的相应属性。 这将完全取代默认的事件处理程序。 [...]
[...] 如果您不想替换默认事件处理程序,而是想添加一个额外的事件处理程序,pyglet 提供了使用事件装饰器的快捷方式。 您的自定义事件处理程序将运行,然后是默认事件处理程序。 [...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.