Python: pygame.QUIT()

2019-07-18 03:01发布

问题:

Just been messing around with pygame and ran into this error.

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();

ERROR:

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

I was just trying to set a while loop so that when the red X is pressed then the program will exit. What is going wrong?

回答1:

Calling sys.exit() raises the SystemExit exception, so that's perfectly normal. For example, try changing your exit call to sys.exit(1) and you will see the new exit code reflected in your traceback:

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

In other news, you probably don't need to be explicitly calling pygame.quit() - the documentation suggests letting your program quit in the normal way.



回答2:

Toggle a bool when you hit escape. Then you can cleanly save data other in places, if needed.

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

    draw()