2014-02-09 5 views
0

Im работает окно Pygame с использованием графического интерфейса. Например, когда пользователь нажимает кнопку в графическом интерфейсе, появляется окно Pygame. Однако, когда я хочу выйти из окна Pygame, мой GUI тоже уйдет. Я уверен, что это: Из-за следующих строк кода:Выход из окна Pygame

for event in pygame.event.get(): 
      if event.type==pygame.QUIT: 
       pygame.quit() 
       sys.exit() 

sys.exit() выходит все, из-за чего IDE закрывается окно Pygame. Но как мне закрыть окно Pygae? Ive пробовал:

for event in pygame.event.get(): 
      if event.type==pygame.QUIT: 
       pygame.quit() 
       break 

Но это не работает. Какие-либо предложения?

В GUI им с помощью PyQt4 с Python 3.

+0

Что такое "does not work"? Предложения для чего? – ekhumoro

+0

Мой альтернативный код, который только закрывает окно Pygame, а не окно pygame и окно GUI –

+2

Конечно: но что _actually happens_ во втором случае? Окно pygame закрывается, ни закрывается окно, ни окна закрыты, ни что именно? – ekhumoro

ответ

1

Я предполагаю, что ваш фрагмент кода

for event in pygame.event.get(): 
    if event.type==pygame.QUIT: 
     pygame.quit() 
     break 

является частью вашего основного цикла, выполняющимся в while петли, как

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

Проблема заключается в том, что break выйдет из цикла for, а не цикла while, что в конечном итоге приведет к исключение, так как вы выходите Pygame, но, вероятно, пытается нарисовать экран и т.д. и т.п.

Простое исправление использовать переменную в качестве условия для while петли, как

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

или убедитесь, что для выхода из while

while True: 
    if pygame.event.get(pygame.QUIT): # only check for QUIT event 
     break 
    for event in pygame.event.get(): 
     ... 
Смежные вопросы