Выключение полноэкранного режима pygame

Я запускаю эту небольшую программу, которая загружает изображения на экран в полноэкранном режиме, но как только она загрузится, программа не выйдет из какой-либо комбинации клавиш, и мне придется перезагрузить компьютер, чтобы завершить все, что я делал.

import pygame

pygame.init()
WIDTH=1366; HEIGHT=768
screen = pygame.display.set_mode((WIDTH, HEIGHT), pygame.FULLSCREEN)
pygame.display.set_caption('Katso')
PENGUIN = pygame.image.load("assets/download.png")
MICKEY = pygame.image.load("assets/mickey.jpg")
ADV = pygame.image.load("assets/adv.jpg")
CAT = pygame.image.load("assets/cat.jpg")
FLV = pygame.image.load("assets/flavours.jpg")
HALL = pygame.image.load("assets/hallway.jpg")
x = 0; # x coordnate of image
y = 0; # y coordinate of image
screen.****(PENGUIN,(x,y)); pygame.display.update()
running = True
while True:
 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 pygame.QUIT()
 if event.type == pygame.KEYDOWN and event.key == pygame.K_1:
 screen.****(MICKEY,(x,y)); pygame.display.update()
 if event.type == pygame.KEYDOWN and event.key == pygame.K_2:
 screen.****(PENGUIN,(x,y)); pygame.display.update()
 if event.type == pygame.KEYDOWN and event.key == pygame.K_3:
 screen.****(ADV,(x,y)); pygame.display.update()
 if event.type == pygame.KEYDOWN and event.key == pygame.K_4:
 screen.****(FLV,(x,y)); pygame.display.update()
 if event.type == pygame.KEYDOWN and event.key == pygame.K_5:
 screen.****(CAT,(x,y)); pygame.display.update()
 if event.type == pygame.KEYDOWN and event.key == pygame.K_6:
 screen.****(HALL,(x,y));pygame.display.update()
pygame.QUIT()
2 ответа

pygame.QUIT - это постоянное значение (целое число), которое используется для проверки типа события. Чтобы uninitialize pygame, вы должны вызвать pygame.quit() (нижний регистр), но это на самом деле не выходит из вашей игры, а только не инициализирует загруженные модули pygame. Мне кажется, что нужно закрыть окно, только если вы начали игру в редакторе, основанном на tkinter, таком как IDLE.

Чтобы выйти из игры, вы можете просто вырваться из цикла while и позволить Python завершить программу, как обычно, или вы можете вызвать sys.exit().

Поскольку вы не можете нажать кнопку "x", чтобы закрыть окно в полноэкранном режиме, вам нужно использовать такой ключ, как Esc.

running = True
while running:
 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 running = False
 elif event.type == pygame.KEYDOWN:
 if event.key == pygame.K_ESCAPE:
 running = False # Set running to False to end the while loop.


Там булев, running, что не используется.

Вместо этого:

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

... подумайте об этом:

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

licensed under cc by-sa 3.0 with attribution.