Программы 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 в диспетчере задач , Может ли кто-нибудь обнаружить проблему с моим кодом?

5 Solutions collect form web for “Программы Pygame, висящие на выходе”

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

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

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

А также: Pygame Documentation – pygame.quit ()

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

  while True: # outer loop for event in pygame.event.get(): # inner loop if event.type == QUIT: break # <- break inner loop 

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

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

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

У меня была аналогичная проблема, зная, почему я не могу закрыть окна pygame .. и обыскал .. и наткнулся на это ..

Я думаю, это все объясняет .. и хорошая идея тоже ..

как видно на: http://bytes.com/topic/python/answers/802028-pygame-window-not-closing-tut-not-helping

Я думаю, проблема заключается в том, что вы запускаете ее из IDLE. Похоже, что цикл событий pyGame и цикл событий Tkinter мешают друг другу. Если вы запускаете скрипты из командной строки, это работает.

  • Ошибка при установке Pygame на Mountain Lion
  • Как заставить VBO работать с Python и PyOpenGL
  • Создание .exe для pygame с cx-freeze
  • Звуки завершаются до следующего, в python?
  • круг pygame не меняется
  • Как сохранить pygame Surface как изображение в память (а не на диск)
  • Открывается приложение cx_freeze, которое быстро закрывается
  • Каков наилучший способ добавления графического интерфейса в приложение Pygame?
  • Окно терминала Python появляется при запуске приложения pygame
  • Настройка громкости в pygame.Sound module
  • Как установить шрифт pygame
  • Python - лучший язык программирования в мире.