使用 Pyglet 的黑色屏幕截图
Black screenshot using Pyglet
我一直在尝试获取使用 Python 的 Pyglet 模块创建的 window 的屏幕截图。我使用这行代码来抓取屏幕截图:
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()
您在 window 有机会画任何东西之前截图。
因为 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')
这样,只有在您按下某个键后才会截取屏幕截图,这样 window 就可以先绘制其内容。
我一直在尝试获取使用 Python 的 Pyglet 模块创建的 window 的屏幕截图。我使用这行代码来抓取屏幕截图:
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()
您在 window 有机会画任何东西之前截图。
因为 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')
这样,只有在您按下某个键后才会截取屏幕截图,这样 window 就可以先绘制其内容。