2016-12-26 2 views
1

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

import pygame 

pygame.init() 

(width, height) = (1000, 700) 
screen = pygame.display.set_mode((width, height)) 
while True: 
    pygame.display.flip() 

Но когда появляется окно он говорит, что это «не отвечает». Я попытался удалить цикл так, чтобы дисплей просто мигал один раз и исчезал, потому что программа умела бы умереть после его создания, но я получаю то же самое «не отвечающее» окно. Я использую pygame 1.9.2 и python 3.5. Интересно, может ли быть проблема из-за анаконды - окно открыто по умолчанию для подкарта для анаконды.

Редактировать: До сих пор я обнаружил, что, когда я открываю его не из spyder, а просто нажимаю на файл, он работает нормально. Есть ли способ заставить его работать простым прогоном и компиляцией во время работы в шпионе, или это именно то, как он должен работать?

ответ

1

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

import sys 

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

Программа должна регулярно обрабатывать события или ОС считает Pygame разбился. Вот почему он работает, когда вы добавляете 'pygame.event.get()'. http://stackoverflow.com/documentation/pygame/5110/event-handling#t=201612261318490992061 –

+0

А, ок. Мое решение должно работать, хотя это и есть правильное объяснение. – Octo

+0

Ваш отступ немного от него, но в противном случае он должен ответить на вопрос. Если бы вы могли добавить строку или два, объяснив, почему это решение работает, было бы здорово! В моей ссылке у вас есть короткое объяснение в третьей точке пули первого примера и в разделе ** ВНИМАНИЕ ** во втором примере. –

1
#Try This 


import pygame 

(width, height) = (1000, 700) 
screen=pygame.display.set_mode((width, height)) 
pygame.display.update() 
while True: 
    for event in pygame.event.get():`` 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      quit() 
Смежные вопросы