Программа, запущенная в терминале, завершится после выполнения всего кода. Если вам нужна программа, которая пассивно сидит и слушает вводимые пользователем данные, вам нужно добавить al oop, чтобы программа продолжала работать. Структура basi c выглядит так (взято из https://realpython.com/pygame-a-primer/#setting -up-the-game-l oop)
# Variable to keep the main loop running
running = True
# Main loop
while running:
# Look at every event in the queue
for event in pygame.event.get():
# Did the user hit a key?
if event.type == KEYDOWN:
# Was it the Escape key? If so, stop the loop.
if event.key == K_ESCAPE:
running = False
# Did the user click the window close button? If so, stop the loop.
elif event.type == QUIT:
running = False
Если эта структура вам не знакома , идея состоит в том, что пока переменная running = True, программа будет возвращаться к строке while каждый раз, когда достигнет конца. Если вы действительно хотите завершить программу, например, позволяя пользователю нажать клавишу выхода для выхода, вы добавляете прослушиватель событий, как показано, которое изменяет текущую переменную на false.
Если я понимаю вашу проблему правильно, поместите все свои инициализации и импорт в начало скрипта, а затем все ваши прослушиватели событий в l oop. Я также настоятельно рекомендую прочитать документацию по pygame.