2016-12-24 98 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

它實際上工作!謝謝! –