Есть ли способ закрыть окно, не выходя из pygame

Я много пытался найти решение других вопросов, но не уверен, что смогу точно реализовать их в своей программе. Вот и решил спросить здесь.

Есть ли простой способ закрыть окно в pygame, сохранив при этом pygame открытым и способным выполнять задачи? Я использую:

pygame.quit()

Но выходит из программы.

У кого-нибудь есть идея?


person JayRoy    schedule 17.03.2020    source источник


Ответы (1)


сделать pygame.display.quit(), чтобы закрыть окно, не выходя из pygame

person Sven    schedule 17.03.2020
comment
Я пробовал это, но в коде, над которым я работаю, возникает ошибка, в которой говорится, что отображение поверхности завершено. По-прежнему есть код, который нужно запустить после того, как я закрою это окно, но эта ошибка прерывает его. Я не знаю, как решить эту новую проблему. Прикрепить код? - person JayRoy; 25.03.2020
comment
да, пожалуйста, покажите ошибку и свой код - person Sven; 25.03.2020
comment
Во-первых, мне удалось воспользоваться вашим советом, чтобы устранить ошибку «display surface quit», но теперь я получаю еще одну ошибку. Я использую оператор elif для поиска кнопки ввода на клавиатуре. Когда она нажата, я хочу, чтобы экран, который я открыл, закрывался, но продолжал работу оболочки для обработки вычислений. Вместо этого я получаю: pygame.error: video system not initialized Извините, если это очень долго - person JayRoy; 27.03.2020
comment
После того, как вы сделали pygame.display.quit, вы больше не можете запускать команды для своей игры, поэтому вам придется прервать игровой цикл. - person Sven; 27.03.2020
comment
это моя проблема, я хочу, чтобы графический интерфейс закрылся, но я также хочу, чтобы SHELL оставалась открытой. Как лучше всего это сделать? - person JayRoy; 27.03.2020
comment
не могли бы вы придумать какой-нибудь код - person Sven; 27.03.2020
comment
Я бы сделал это, но я не могу точно определить ошибку, поэтому прикрепленный блок кода будет слишком большим для комментариев. Если это помогает, код, использующий графику, находится в классе. Функция рендеринга этого класса вызывается в цикле while вне кода. Внутри этого цикла while есть pygame.display.quit, а затем следует функция рендеринга. Цикл ищет кнопку, которую нужно нажать, и должен прервать цикл и продолжить. Но это не так. - person JayRoy; 04.04.2020
comment
с break() можно выйти из петель. Может быть, вам стоит попробовать это с вашим циклом, когда вы хотите закрыть окно. - person Sven; 04.04.2020
comment
к сожалению, датчик контура фактически находится вне контура. Он остается в функции рендеринга, которая является частью класса. Поэтому я не уверен, куда мне поместить команду break. - person JayRoy; 04.04.2020
comment
просто попробуйте, где подходит команда. Если он совсем не подходит, попробуйте что-нибудь вроде: running = True --------- - если запущено: pygame.update_function () ---------------- если now_leave_game: running = False - person Sven; 04.04.2020