2

DebianでPython 2.7.3でPygame 1.9.1を使用していますが、

より高度になる前に、小さなテストプログラムを機能させようとしています。
Pygame に終了を指示するまでは、問題なく動作しているようです。

pygame.quit()少なくとも IDLE 内で が必要であることを読みました (正常に終了することを確認する
ため) 。

関連するコードは次のようになります。

def mainLoop():                                                                                                                 
    running = True                                                                                                              
    clock = pygame.time.Clock()                                                                                                 
    while running:                                                                                                              
        gameMode()                                                                                                              
        render()                                                                                                                
        key = pygame.key.get_pressed()                                                                                          
        for event in pygame.event.get():                                                                                        
            if event.type == QUIT or key[K_ESCAPE]:                                                                             
                running = False                                                                                                 
                print 'finished'                                                                                                
                return                                                                                                          
        clock.tick(30)

if __name__=='__main__':                                                                                                        
    mainLoop()                                                                                                                  
    print 'exiting after main loop'                                                                                             
    pygame.quit()

これを実行すると、「終了」と「メインループ後に終了」の両方が出力され
ますが、それでもウィンドウが表示されたままハングします。

さらに奇妙なことに、まだハング
する最小限のプログラムに切り詰めました(これが全体です)。

import pygame
pygame.init()
pygame.quit()

誰かがここで何が起こっているのかを明らかにすることができますか?

4

4 に答える 4

4

pygame.init必要かどうかにかかわらず、PyGame のすべてのモジュールを初期化しようとします。pygame.quitすべてのアクティブなモジュールを終了し、インタープリターが終了すると自動的に呼び出されます (これが、への明示的な呼び出しpygame.quitが削除されても問題が残る理由です)。

このpygame.mixer.quitメソッドは現在、Debian Wheezy でハングしています (2013 年 6 月 12 日現在)。ミキサーを使用していない場合は、pygame.initへの呼び出しを、init使用しているモジュールのメソッドへの呼び出しに置き換えることができます (呼び出しが必要なモジュールのリストは、 PyGame ドキュメント インデックスinitの「I」の下にあります)。私の場合、モジュールを初期化するだけで十分でした。したがって、あなたの例は次のようになります。display

import pygame
pygame.display.init()
pygame.quit()
于 2013-06-12T15:14:29.017 に答える
0

IDLEでプログラムを実行しようとしていますか?IDLEはpygameが好きではないので、あなたがそうすることを想定していないと聞いた

于 2013-02-04T12:00:54.537 に答える
0

このコマンドpygame.quit()は基本的に、開いているウィンドウを閉じるだけです。コードは、画面が存在しないというエラーが発生するまで続行されます。実際にプログラムを停止したい場合は、 を使用するsys.exit()とプログラムが停止します。

于 2013-02-04T00:30:06.363 に答える