22

Python 3.3 で使用する pygame の 64 ビット インストールを見つけるのにかなりの時間を費やしました ( here )。現在、ウィンドウを作成しようとしています。ただし、ウィンドウは正常に開きますが、xボタンを押しても閉じません。実際、ウィンドウを閉じるには IDLE を閉じる必要があります。Win 7 の 64 ビット バージョンを実行しています。コードは次のとおりです。

import pygame
import time
(width, height) = (300, 200)
screen = pygame.display.set_mode((width, height))
pygame.display.flip()
pygame.display.set_caption("Hello World")
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

追加すると

time.sleep(5)
pygame.quit()

まだ閉まりません。私の唯一の推測は、pygame.quit がループの 1 つに入る可能性があるということですが、それが解決されたとしても、必要なときにウィンドウを閉じることができることを大いに望んでいます。

4

9 に答える 9

18

ウィンドウボタン x が押されたときに pygame を閉じたい場合は、次のようにコードを記述します。

from sys import exit
while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit()

pygame.quit() はシステムを終了させ、exit() はそのウィンドウを閉じるため、pygame.quit() の後に exit() を配置します。

于 2015-12-03T03:52:58.747 に答える
8

pygame.quit()よくわかりませんが、最後に追加した後、システムでコードが正常に実行されるため、これを試してください

import pygame
import time
(width, height) = (300, 200)
screen = pygame.display.set_mode((width, height))
pygame.display.flip()
pygame.display.set_caption("Hello World")
running = True
try:
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
    pygame.quit()
except SystemExit:
    pygame.quit()

これはおそらく、Idle が Tkinter で作成されているため、Tkinter と Pygame のメイン ループが相互に理解されていないためです。
ただし、コードはコマンドプロンプトで非常にうまく実行されます。

于 2013-11-09T20:33:59.683 に答える
1

IDE (Spyder 3.3.6) から Python 3.7.4 を実行しているときに、Python 3.7.4 で同じ問題が発生しました。私の場合、 pygame.quit() はプログラムを完全に閉じません。それでも、quit() または exit() を追加するとうまくいきました。

于 2020-02-27T20:45:05.897 に答える
0

次のコマンドを使用してみてください。

sys.exit(0)

注意: 使用するには、sys ライブラリをインポートする必要があります。

于 2015-05-30T13:32:09.867 に答える