web-dev-qa-db-ja.com

Pygameウィンドウを閉じる

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

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つに入る可能性があることですが、それが解決されたとしても、必要なときにウィンドウを閉じることができることを強く望んでいます。

14
KnightOfNi

ほとんどのpygameチュートリアルは、pygame.quit()を呼び出してからsys.exit()を呼び出して終了することを提案しているようです。私は個人的に問題を抱えています(ただし、UNIXシステム上にありました)。これでもウィンドウが適切に閉じません。解決策は、特にpygame.display.quit()の前にpygame.quit()を追加することでした。私が知る限りそれは必要ないはずです、そしてなぜそれが問題を解決したのかは分かりませんが、それは解決しました。

18
Erikun

ウィンドウボタン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()がそのウィンドウを閉じるため、exit()をpygame.quit()の後に配置します。

9
jerryalfs

わかりませんが、最後に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のメインループが相互に理解していないためです。
ただし、コードはコマンドプロンプトで非常に適切に実行されます。

5
noobmaster69

これは、Jupyterでカーネルを存続させながらOSXで機能する最後のコードでした。編集-それは時々まだカーネルをクラッシュさせます:-(

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
pygame.display.quit()
pygame.quit()
exit()

また、ipythonをダウングレードして、以下を使用していくつかの魔法のエイリアス警告メッセージを取り除く必要があります。

conda install ipython=7.2.0

どうやらその問題はipython 7.6.0で修正される予定です

2
blissweb

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

1

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

sys.exit(0)

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

0
OphirBack

IDEは、pygameがコードを実行する方法を妨害します。コマンドラインまたはターミナルから実行してみてください。問題は解消されるはずです。

0
NinjasAtWork