使用Pyglet的黑色截图

时间:2016-12-24 09:26:34

标签: python opengl screenshot pyglet

我一直在尝试使用Python的Pyglet模块抓取我创建的窗口的屏幕截图。我使用这行代码来获取屏幕截图:

pyglet.image.get_buffer_manager().get_color_buffer().save('screenshot1.png')

虽然在运行程序时没有出现错误并且创建了屏幕截图文件,但文件只是黑色。这是完整的代码:

import pyglet
from pyglet import gl

window = pyglet.window.Window(500, 500)

@window.event
def on_draw():
    window.clear()
    pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (200, 200, 400, 400)))


pyglet.image.get_buffer_manager().get_color_buffer().save('screenshot1.png')

pyglet.app.run()

1 个答案:

答案 0 :(得分:1)

在窗口有机会绘制任何内容之前,您正在截取屏幕截图。 因为on_draw()事件处理程序仅在您启动后调用 event handling looppyglet.app.run()

一种可能的解决方案是将屏幕截图功能也放入事件处理程序中,例如:

@window.event
def on_key_press(symbol, modifiers):
    pyglet.image.get_buffer_manager().get_color_buffer().save('screenshot1.png')

这样,屏幕截图只能在您按一个键后才能进行,这样就可以让窗口首先绘制其内容。

相关问题