2016-07-14 11 views
0

pygameでフレームバッファに書き込むことで、USBディスプレイ(Raspberry Pi上)にアルバムアートを表示するための小さなスクリプトを書いた。スクリプトが完璧に働いていると、アルバムアートが3秒間画面に表示されます。pygameを終了するときにフレームバッファをクリアしない

def set_image(image): 
    """ Set the USB display image using pygame (320px x 240px) """ 
    pygame.display.init() 
    size = (pygame.display.Info().current_w, pygame.display.Info().current_h) 
    black = 0, 0, 0 
    screen = pygame.display.set_mode(size) 
    pygame.mouse.set_visible(False) 
    pygame_image = pygame.image.fromstring(image.tobytes(), image.size, image.mode) 
    pygame_image_rect = pygame_image.get_rect() 
    screen.fill(black) 
    screen.blit(pygame_image, (40, 0)) 
    pygame.font.init() 
    pygame.display.update() 
    time.sleep(3) 

問題はスクリプトが終了すると、pygameは(正確に)フレームバッファをクリアし、私のイメージが消えるということです。終了時にフレームバッファの内容を残すように指示する方法はありますか?

+0

'pygame'がフレームバッファをクリアしていることをどのように知っていますか? – martineau

答えて

0

pygame.quitを呼び出していますか?一般

: は - 異なる表面 に反転するのに使用フリップ - - 窓サーバー(コンソールから実行) を実行しない終了時pygame.quitを呼び出すことはありません。

それ以降何が起こるかを保証するのは難しいですが、フリップはスクリーンバッファをシェルが使うメモリとは別の場所に移動するため、上書きされず、pygame.quitそれはそれを(悪い)状態にしておくべきです。シナリオがありますが、これは便利です。

+0

"Pythonインタプリタがシャットダウンすると、このメソッドは無関係に呼ばれるので、プログラムはそれを必要としません" – tedder42

関連する問題