У меня есть скрипт 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()
.