好的,这是 pyglet 中的完整工作示例。它显示文本“hello world”在窗口周围随机走动,并在您每次按下键时转储屏幕截图(使用您发布的完全相同的代码行)。
import pyglet, random
window = pyglet.window.Window()
label = pyglet.text.Label('Hello, world',
font_name='Times New Roman',
font_size=36,
x=window.width//2, y=window.height//2,
anchor_x='center', anchor_y='center')
@window.event
def on_draw():
window.clear()
label.draw()
@window.event
def on_key_press(symbol, modifiers):
pyglet.image.get_buffer_manager().get_color_buffer().save('screenshot.png')
def update(dt):
label.x += random.randint(-10, 10)
label.y += random.randint(-10, 10)
pyglet.clock.schedule_interval(update, 0.1)
pyglet.app.run()
截屏不会停止事件循环。pyglet 中的事件循环只是懒惰的,并试图做尽可能少的工作。如果您希望事情自行发生,您需要安排一个函数重复运行。否则,它将等待附加了侦听器的事件发生。(您的代码必须在监听鼠标事件,这就是当您单击鼠标时它会恢复工作的原因。)
简短的回答,我怀疑你需要的修复是pyglet.clock.schedule_interval(...)
.