Программы Pygame, зависающие на выходе

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

Возьмите следующий код, например:

from pygame.locals import *
pygame.init()
# YEEAAH!
tile_file = "blue_tile.bmp"
SCREEN_SIZE = (640, 480)
SCREEN_DEPTH = 32

if __name__ == "__main__":
    screen = pygame.display.set_mode(SCREEN_SIZE, 0, SCREEN_DEPTH)
    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                break

    tile = pygame.image.load(tile_file).convert()
    colorkey = tile.get_at((0,0))
    tile.set_colorkey(colorkey, RLEACCEL)

    y = SCREEN_SIZE[1] / 2
    x = SCREEN_SIZE[0] / 2

    for _ in xrange(50):
        screen.blit(tile, (x,y))
        x -= 7
        y -= 14

Я не вижу ничто плохого с кодом, он работает (проигнорируйте то, что мозаика не является копированием битового массива в правильных местах), но нет никакого traceback и единственного способа закрыться, он должен уничтожить процесс Python в Диспетчере задач. Кто-либо может определить проблему с моим кодом?

10
задан Enrico Tuvera Jr 8 January 2010 в 11:06
поделиться

2 ответа

Если вы запускаете его из IDLE, то вам не хватает pygame.quit().

Это вызвано интерпретатором IDLE python, который, кажется, как-то хранит ссылки вокруг. Убедитесь, что при выходе из приложения или игры вы вызываете pygame.quit().

Смотрите: В IDLE почему окно Pygame не закрывается правильно?

А также: Документация по Pygame - pygame.quit()

13
ответ дан 3 December 2019 в 14:43
поделиться

Где вы выходите из внешней петли?

 while True: # outer loop
     for event in pygame.event.get(): # inner loop
         if event.type == QUIT:
            break # <- break inner loop
12
ответ дан 3 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: