2016-12-26 4 views
1

Ich versuche langsam, pygame kennen zu lernen und schreibe mein erstes Spiel darin und ehrlich, ich habe nicht so früh mit Problemen gerechnet. Bisher habe ich nur gesetzt, ein Display, das soll es sein, auf unbestimmte Zeit (ich wollte nur, es auszuprobieren):Pygame-Display antwortet nicht

import pygame 

pygame.init() 

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

Aber wenn das Fenster erscheint es sagt, dass es „nicht reagiert“. Ich habe versucht, die Schleife zu löschen, so dass die Anzeige nur einmal blinkt und verschwindet, weil das Programm nach der Erstellung unwiederbringlich versterben würde, aber ich bekomme das gleiche "nicht reagiert" -Fenster. Ich benutze Pygame 1.9.2 und Python 3.5. Ich frage mich, ob das Problem auf Anakonda zurückzuführen sein könnte - das Fenster wird standardmäßig als Subcart für Anaconda geöffnet.

Edit: Bisher habe ich entdeckt, dass, wenn ich es nicht von Spyder öffnen, aber nur auf eine Datei klicken, funktioniert es gut. Gibt es eine Möglichkeit, es einfach zu starten und zu kompilieren, während es in Spyder ist oder wie es funktionieren soll?

Antwort

1

Fügen Sie dies Ihrer Schleife hinzu. Für mich ist das einzige Mal, dass es nicht antwortet, wenn ich auf das X klicke und dies könnte mit der Tatsache zu tun haben, dass Pygame nicht weiß, was zu tun ist, wenn das passiert.

import sys 

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

Das Programm muss regelmäßig Ereignisse behandeln oder das os denkt pygame abgestürzt ist. Deshalb funktioniert es, wenn Sie 'pygame.event.get()' hinzufügen. http://stackoverflow.com/documentation/pygame/5110/event-handling#t=201612261318490992061 –

+0

Ah, ok. Meine Lösung sollte aber funktionieren, aber das ist die richtige Erklärung – Octo

+0

Ihr Einzug ist ein wenig aus, aber sonst sollte es die Frage beantworten. Wenn Sie eine oder zwei Zeilen hinzufügen könnten, die erklären, warum diese Lösung funktioniert, wäre es großartig! In meinem Link haben Sie eine kurze Erklärung im dritten Aufzählungspunkt des ersten Beispiels und im Abschnitt ** ACHTUNG ** im zweiten Beispiel. –

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