The*_*uck 7 python events screenshot pyglet
在pyglet文档中,我发现:
以下示例显示如何获取应用程序窗口的屏幕截图:
pyglet.image.get_buffer_manager().get_color_buffer().save('screenshot.png')
但是当使用它时,一切都会停止,直到我点击鼠标.是否有另一种方法来获取Pyglet中的屏幕内容,或强制它回到事件循环?
编辑:我发现实际上有一个短暂的延迟(0.2秒〜),但没有别的.实际上它与停止pyglet的F10键有关.> _>
我无法关闭或删除,因为有开放的赏金.
好的,这是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()
Run Code Online (Sandbox Code Playgroud)
截屏不会停止事件循环.pyglet中的事件循环只是懒惰,并尝试尽可能少地工作.如果您希望事情继续发生,您需要安排一个重复运行的函数.否则,它将等待发生附加侦听器的事件.(您的代码必须正在侦听鼠标事件,这就是当您单击鼠标时它恢复工作的原因.)
简短的回答,我怀疑你需要修复pyglet.clock.schedule_interval(...).
| 归档时间: |
|
| 查看次数: |
2098 次 |
| 最近记录: |