Python:pygame.QUIT()

时间:2012-12-17 21:54:49

标签: python pygame exit quit sys

刚刚搞乱了pygame并遇到了这个错误。

CODE:

import sys
import pygame
pygame.init()

size = width, height = 600, 400

screen = pygame.display.set_mode(size)

while 1:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit(); sys.exit();

错误:

Traceback (most recent call last):
  File "C:/Users/Mike Stamets/Desktop/Mygame/Pygame practice/ScreenPractice.py", line 12, in <module>
    pygame.quit(); sys.exit();
SystemExit

我只是想设置一个while循环,这样当按下红色X时,程序将退出。出了什么问题?

3 个答案:

答案 0 :(得分:2)

调用sys.exit()会引发SystemExit异常,这是完全正常的。 例如,尝试将您的退出呼叫更改为sys.exit(1),您将在跟踪中看到新的退出代码:

Traceback (most recent call last):
  File "C:/.../pygame.py", line 8, in <module>
    sys.exit(1);
SystemExit: 1

在其他新闻中,您可能不需要明确调用pygame.quit() - the documentation建议让您的程序以正常方式退出。

答案 1 :(得分:2)

当你逃脱时切换一个布尔。然后,如果需要,您可以在其他地方干净地保存数据。

done = False
while not done:
    #events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    draw()

答案 2 :(得分:1)

我回想起一个简单的python音乐播放器事件。 此处的代码

import pygame
from pygame import mixer

pygame.init()
mixer.init()
screen = pygame.display.set_mode((600, 400))
mixer.music.load("song.mp3")
mixer.music.play()

print("Press 'p' to pause 'r' to resume")
print("Press 'q' to quit")
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
               running  = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_s:
                mixer.music.stop()
            if event.key == pygame.K_r:
                mixer.music.play()
            if event.key == pygame.K_p:
                mixer.music.pause()
            if event.key == pygame.K_y:
                mixer.music.unpause()

pygame.QUIT()