3.6: The QUIT Event and pygame.quit() Function
- Page ID
import pygame, sys from pygame.locals import * pygame.init() DISPLAYSURF = pygame.display.set_mode((400, 300)) pygame.display.set_caption('Hello World!') while True: # main game loop for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() pygame.display.update()
Event objects have a member variable (also called attributes or properties) named
type which tells us what kind of event the object represents. Pygame has a constant variable for each of possible types in the
pygame.locals modules. Line 9 checks if the Event object’s
type is equal to the constant
QUIT. Remember that since we used the
from pygame.locals import * form of the
import statement, we only have to type
QUIT instead of
If the Event object is a quit event, then the
sys.exit() functions are called. The
pygame.quit() function is sort of the opposite of the
pygame.init() function: it runs code that deactivates the Pygame library. Your programs should always call
pygame.quit() before they call
sys.exit() to terminate the program. Normally it doesn’t really matter since Python closes it when the program exits anyway. But there is a bug in IDLE that causes IDLE to hang if a Pygame program terminates before
pygame.quit() is called.
Since we have no
if statements that run code for other types of Event object, there is no event-handling code for when the user clicks the mouse, presses keyboard keys, or causes any other type of Event objects to be created. The user can do things to create these Event objects but it doesn’t change anything in the program because the program does not have any event-handling code for these types of Event objects. After the
for loop on line 8 is done handling all the Event objects that have been returned by
pygame.event.get(), the program execution continues to line 12.
Line 12 calls the
pygame.display.update() function, which draws the Surface object returned by
pygame.display.set_mode() to the screen (remember we stored this object in the
DISPLAYSURF variable). Since the Surface object hasn’t changed (for example, by some of the drawing functions that are explained later in this chapter), the same black image is redrawn to the screen each time
pygame.display.update() is called.
That is the entire program. After line 12 is done, the infinite
while loop starts again from the beginning. This program does nothing besides make a black window appear on the screen, constantly check for a
QUIT event, and then redraws the unchanged black window to the screen over and over again. Let’s learn how to make interesting things appear on this window instead of just blackness by learning about pixels, Surface objects, Color objects, Rect objects, and the Pygame drawing functions.