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

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

10 голосов | спросил Enrico Tuvera Jr 8 Jpm1000000pmFri, 08 Jan 2010 14:06:06 +030010 2010, 14:06:06

3 ответа


0

Где вы выходите из внешнего цикла?

 while True: # outer loop
     for event in pygame.event.get(): # inner loop
         if event.type == QUIT:
            break # <- break inner loop
ответил jfs 8 Jpm1000000pmFri, 08 Jan 2010 14:22:04 +030010 2010, 14:22:04
0

У меня была та же проблема, но я решил ее, выполнив следующее:

try:
   while True:
      for event in pygame.event.get():
         if event.type==QUIT or pygame.key.get_pressed()[K_ESCAPE]:
            pygame.quit()
            break
finally:
   pygame.quit()
ответил mechanicarts 11 PMpWed, 11 Apr 2012 19:22:21 +040022Wednesday 2012, 19:22:21
0

'if event.type == QUIT' генерирует синтаксическую ошибку. Должно быть == pygame.QUIT Кроме того, остальная часть строки неверна, но я не вижу, как. Есть более чистый вариант здесь :

    running = True
    while running:
       for event in pygame.event.get():
           if event.type == pygame.QUIT:
           running = False
    pygame.quit()
ответил Nik 28 Maypm12 2012, 22:26:56

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132