Python 其中';是Pyglet主回路吗?
考虑以下示例:Python 其中';是Pyglet主回路吗?,python,pyglet,Python,Pyglet,考虑以下示例: import pyglet def foo(): print("I'm in a loop...") def main(): w = pyglet.window.Window() @w.event def on_draw(): foo() pyglet.app.run() return 0 if __name__ == '__main__': main() 我真的希望on_draw()能够在内
import pyglet
def foo():
print("I'm in a loop...")
def main():
w = pyglet.window.Window()
@w.event
def on_draw():
foo()
pyglet.app.run()
return 0
if __name__ == '__main__':
main()
我真的希望on_draw()能够在内部主循环中绘制东西,但是
它愚弄了我,只执行一次代码Pyglet实际主循环在哪里?这样我就可以真正地更新那里的东西,而不是只画一次(这是无用的)。我想你正在寻找类似的东西。实际上,我以前从未使用过
pyglet
,但在中,它基本上使用了:
pyglet.clock.schedule_interval(update, 1/120.0)
因此,您可以执行以下操作:
import pyglet
def foo(value):
print("I'm in a loop...")
def main():
w = pyglet.window.Window()
@w.event
def on_draw():
foo(None)
pyglet.clock.schedule_interval(foo, 1.0)
pyglet.app.run()
main()
再说一次,我不是这方面的专家。可能还有更好的方法。EventLoop类包含run方法(pyglet.app.run),基本上是“主循环”。它管理计划的事件,让进程休眠,并管理来自操作系统的事件。通过检查源代码,您可以了解它是如何工作的。您可以在pyglet/app/base.py中找到它 为了阐明代码片段无法按预期工作的原因,pyglet仅在pyglet执行了计划事件或被操作系统显式标记为无效时才会绘制事件;逻辑是,如果没有触发会改变屏幕的事件,为什么要绘制屏幕?如果您试图安排一个称为应用程序循环的每次迭代的事件,那么请使用pyglet.clock.schedule
我从来没有想到会有这样的哈哈(为每个单独的功能设置时间/间隔)。这有点奇怪(或者我太习惯SDL/Allegro/Pygame了)。@RederickDeathwill我也认为这很奇怪。我们应该阅读所有文档,以确保它是正确的使用方法。或者,也许其他专家可以对这条轨道发表评论。在文档中。非常有趣…以上链接从今天起已断开。以上链接应替换为:和。