pygame Fensterschließung funktioniert nicht

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
zerokrezan
User
Beiträge: 8
Registriert: Sonntag 16. Juni 2019, 19:21

Code: Alles auswählen

import pygame
from sys import exit
import sys


pygame.init()

class Game():
    def __init__(self,screen,size):
        self.screen = screen
        self.screen(size)
        
    def schleife(self,event):
        running = True
        while running:
            for events in event:
                if events.type == pygame.QUIT:
                    running = False
                    pygame.quit()
                    quit()


main = Game(pygame.display.set_mode,(200,200))
main.schleife(pygame.event.get())



Wenn ich es ausführe öffnet sich zwar das gewünschte Fenster, aber es lässt sich nicht mher schließen.
Womöglich habe ich was übersehen.
Freue mich über jede Hilfe :)
Danke im Voraus :)
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Die Event-Verarbeitung ist falsch. Die Namen sind schon falsch. events ist EIN event, und event enthält nur die Events, die ganz am Anfang des Spiels da waren, also keine.
`quit` sollte man nicht aufrufen, denn das Programm sollte sein natürliches Ende erreichen. Ebenso verhält es sich mit sys.exit, das aber zum Glück gar nicht verwendet wird.

Code: Alles auswählen

import pygame


class Game():
    def __init__(self, screen, size):
        self.screen = screen
        self.screen.set_mode(size)
        
    def schleife(self):
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return


def main():
    pygame.init()
    game = Game(pygame.display, (200, 200))
    game.schleife()
    pygame.quit()

if __name__ == '__main__':
	main()
zerokrezan
User
Beiträge: 8
Registriert: Sonntag 16. Juni 2019, 19:21

Sirius3 hat geschrieben: Sonntag 19. April 2020, 10:38 Die Event-Verarbeitung ist falsch. Die Namen sind schon falsch. events ist EIN event, und event enthält nur die Events, die ganz am Anfang des Spiels da waren, also keine.
`quit` sollte man nicht aufrufen, denn das Programm sollte sein natürliches Ende erreichen. Ebenso verhält es sich mit sys.exit, das aber zum Glück gar nicht verwendet wird.

Code: Alles auswählen

import pygame


class Game():
    def __init__(self, screen, size):
        self.screen = screen
        self.screen.set_mode(size)
        
    def schleife(self):
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return


def main():
    pygame.init()
    game = Game(pygame.display, (200, 200))
    game.schleife()
    pygame.quit()

if __name__ == '__main__':
	main()
Vielen Dank, das hat mir weitergeholfen! :)
Antworten