Уничтожение и перезапуск объекта PyGame - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть скрипт Python, который, помимо прочего, открывает окно Pygame в одной точке. Если это окно закрыто, его можно открыть. Если окно пигмея открывается снова, я получаю pygame.error: display Surface quit на заднем плане. Все работает отлично, я могу видеть все ошибки, когда я наконец-то завершаю родительский скрипт.

parent.py:

from game import game

def launch_game():
    game = Game() # Now I am in the pygame window until I quit it

# Do a bunch of other stuff
# At some point
launchGame()

game.py

class Game():
    def __init__(self):
        pygame.display.init()
        self.screen = pygame.display.set_mode((640, 480))

    # Set up a bunch of GPIO Controls including a quit button

        self.playing = True
        while self.playing:
            self.check_events()
            sleep(.1)
        pygame.quit()


    def check_events(self, current_station):
        if GPIO.input(self.quitButton) == 0:
            self.playing = False
        if GPIO.input(self.upButton) == 0:
            self.playing = moveUp()
        if GPIO.input(self.downButton) == 0:
            self.playing = moveDown()

Итак, при первом запуске Game () все работает нормально. В следующий раз, когда я увижу дисплей Поверхность в фоновом режиме.

Одна ошибка при каждом нажатии одной из других кнопок. Функции moveUp () и moveDown () заканчиваются функцией рисования экрана и начинаются с self.screen.fill(bg_color). Это то, что вызывает ошибку.

Если я могу открыть игру дважды, я получаю два сообщения об ошибке за нажатие кнопки, три раза, три сообщения об ошибках. Это похоже на то, что экранные объекты все еще хранятся в памяти где-то даже после вызова pygame.quit().

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