我一直在尝试使用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()
答案 0 :(得分:1)
在窗口有机会绘制任何内容之前,您正在截取屏幕截图。
因为on_draw()
事件处理程序仅在您启动后调用
event handling loop与pyglet.app.run()
。
一种可能的解决方案是将屏幕截图功能也放入事件处理程序中,例如:
@window.event
def on_key_press(symbol, modifiers):
pyglet.image.get_buffer_manager().get_color_buffer().save('screenshot1.png')
这样,屏幕截图只能在您按一个键后才能进行,这样就可以让窗口首先绘制其内容。