2016-12-24 97 views
0

我一直在试图抓取使用Python的Pyglet模块创建的窗口截图。我用这行代码来获取截图:使用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

在窗口有机会绘制任何东西之前,您正在进行截图。 因为只有在启动 ,event handling looppyglet.app.run()之后才会调用on_draw()事件处理程序。

一个可行的办法是把截图功能为事件处理为好,例如:

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

这样,你按一个键,这使得窗口绘制后的截图只取其内容首先。

+0

它实际上工作!谢谢! –