Окно отображения Pygame открывается и закрывается немедленно - PullRequest
0 голосов
/ 27 декабря 2018

У меня проблема с попыткой заставить библиотеку Pygame работать в моей среде Pycharm IDE.Даже с этим небольшим количеством кода Pygame, кажется, падает сразу после вызова отображения окна.Я знаю, что эта проблема характерна для синтаксических ошибок в коде, но она все еще дает сбой мне даже с этими 3 простыми строками кода.

import pygame
pygame.init()
win = pygame.display.set_mode((500,500))

1 Ответ

0 голосов
/ 27 декабря 2018

Вам необходим цикл обработки событий, иначе приложение будет закрыто немедленно.

Посмотрите на следующий код из http://pygametutorials.wikidot.com:

import pygame
from pygame.locals import *

class App:
    def __init__(self):
        self._running = True
        self._display_surf = None
        self.size = self.weight, self.height = 640, 400

    def on_init(self):
        pygame.init()
        self._display_surf = pygame.display.set_mode(self.size, pygame.HWSURFACE | pygame.DOUBLEBUF)
        self._running = True

    def on_event(self, event):
        if event.type == pygame.QUIT:
            self._running = False
    def on_loop(self):
        pass
    def on_render(self):
        pass
    def on_cleanup(self):
        pygame.quit()

    def on_execute(self):
        if self.on_init() == False:
            self._running = False

        while( self._running ):
            for event in pygame.event.get():
                self.on_event(event)
            self.on_loop()
            self.on_render()
        self.on_cleanup()

if __name__ == "__main__" :
    theApp = App()
    theApp.on_execute()

Метод класса on_execute сначала вызывает *Метод 1008 *, в котором инициализируется pygame и устанавливается режим отображения, затем выполняется цикл обработки событий, когда события pygame обрабатываются и отображается текущий кадр.

Только если событие pygame.QUIT перехватывает цикл обработки событийзакрывается и pygame.quit() вызывается для очистки среды pygame.Затем также приложения заканчиваются.

Если это не помогает поделиться сообщением о сбое.Поэтому попробуйте выполнить ваш код из командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...