Содержание
- Ошибка Pygame: отображение поверхности закрыто: почему?
- 9 ответы
- Ошибка Pygame: отображение поверхности закрыто: почему?
- 10 ответов
- Русские Блоги
- Подробный Pygame (два): модуль отображения
- pygame.display
- функция
- Описание функции
- pygame.display.init()
- pygame.display.quit()
- pygame.display.get_init()
- pygame.display.set_mode()
- pygame.display.get_surface()
- pygame.display.flip()
- pygame.display.update()
- pygame.display.get_driver()
- pygame.display.Info()
- pygame.display.get_wm_info()
- pygame.display.list_modes()
- pygame.display.mode_ok()
- pygame.display.gl_get_attribute()
- pygame.display.gl_set_attribute()
- pygame.display.get_active()
- pygame.display.iconify()
- pygame.display.toggle_fullscreen()
- pygame.display.set_gamma()
- pygame.display.set_gamma_ramp()
- pygame.display.set_icon()
- pygame.display.set_caption()
- pygame.display.get_caption()
- pygame.display.set_palette()
- Интеллектуальная рекомендация
- IView CDN Загрузка значка шрифта нормальная, а значок шрифта не может быть загружен при локальной загрузке JS и CSS
- Критическое: ошибка настройки прослушивателя приложения класса org.springframework.web.context.ContextLoaderLis
- 1086 Не скажу (15 баллов)
- Pandas применяют параллельный процесс приложения, многоядерная скорость очистки данных
- PureMVC Learning (Tucao) Примечания
Ошибка Pygame: отображение поверхности закрыто: почему?
Может ли кто-нибудь сказать мне, почему мое приложение закрывается:
Ошибка pygame: отображение поверхности завершено.
Опубликуйте всю трассировку и, по крайней мере, код функции, в которой возникло исключение. — Kylotan
Действительно, без минимальный воспроизводимый пример, этот вопрос следует закрыть. Тем не менее, у него есть несколько ценных ответов, которые стоит иметь при себе. — Mogsdad
9 ответы
У меня была аналогичная проблема, и я обнаружил, что объекты Surface не любят глубокое копирование. Когда я использовал copy.deepcopy () для такого объекта, а затем получил доступ к копии, я получил это странное сообщение об ошибке (без вызова pygame.quit ()). Может быть, вы испытываете подобное поведение?
У меня была аналогичная проблема в очень простом фрагменте кода:
Сообщение об ошибке было:
Теперь я запустил программу, щелкнул, чтобы закрыть окно, и был немного удивлен, увидев, что попал в отладчик (в конце концов, я ожидал, что выход полностью отключит меня сразу). Итак, я пришел к выводу, что выход на самом деле не останавливает все на этом этапе. Выглядело так, как будто программа продолжалась и после увольнения, доходила до
и это было причиной проблемы. Я добавил
и теперь все работает счастливо.
[Добавлено позже: мне пришло в голову, что
выходит из модульи не программа, которая работает, так что вам нужен перерыв чтобы выйти из этой простой программы. ]
На заметку, это означает, что хорошая версия
Источник
Ошибка Pygame: отображение поверхности закрыто: почему?
Может ли кто-нибудь сказать мне, почему мое приложение закрывается с:
Ошибка pygame: отображение поверхности завершено.
10 ответов
У меня была аналогичная проблема в очень простом фрагменте кода:
Сообщение об ошибке было:
Теперь я запустил программу, щелкнул, чтобы закрыть окно, и был немного удивлен, увидев, что попал в отладчик (в конце концов, я ожидал, что выход полностью отключит меня сразу). Итак, я пришел к выводу, что бросить на самом деле не останавливает все на этом этапе. Выглядело так, как будто программа продолжалась и после увольнения, доходила до
И это было причиной проблемы. Я добавил
И теперь все работает счастливо.
[Добавлено позже: мне пришло в голову, что
Закрывает модуль , а не запущенную программу, поэтому вам понадобится перерыв , чтобы выйти из этой простой программы. ]
На заметку, это означает, что хорошая версия
Вызовите sys.exit () после pygame.quit (), чтобы остановить программу, чтобы вы не могли изменить поверхность после выхода из pygame и не получить ошибку
Чт, 30 ноября 2006 г., 21:27 -0300, Николас Бишоф написал:
pygame.error: display Surface quit, что это значит? Я не могу это исправить
Это означает, что был сделан вызов pygame.display.quit () или pygame.quit (). Если вы попытаетесь сделать что-либо с поверхностью дисплея после выхода, вы получите эту ошибку.
У меня тоже была эта проблема, и, как и ответ Maciej Miąsik, мой был связан с copy.deepcopy () — изображением.
И у меня такая же ошибка.
Я просто изменил copy.deepcopy (EMPTY_IMG) на EMPTY_IMG.
Тогда все заработало нормально.
Заменить if event.type == pygame.quit(): на if event.type == pygame.QUIT:
Убедитесь, что вы пишете pygame.QUIT: , а не pygame.quit(): Я знаю, это звучит странно, но у меня была такая же проблема.
У меня была аналогичная проблема, и я обнаружил, что объекты Surface не любят глубокое копирование. Когда я использовал copy.deepcopy () для такого объекта, а затем получил доступ к копии, я получил это странное сообщение об ошибке (без вызова pygame.quit ()). Может быть, вы испытываете подобное поведение?
У меня тоже была эта проблема, но она возникла из другого источника.
У меня был класс, определенный следующим образом:
Источник
Русские Блоги
Подробный Pygame (два): модуль отображения
pygame.display
Модуль, используемый для управления окном и отображением экрана в Pygame.
Примечание. Чтобы адаптироваться к контексту, в этом документе отображение иногда переводится как «отображение», а иногда как «интерфейс отображения».
функция
- pygame.display.init () — Инициализирует модуль дисплея
- pygame.display.quit () — Завершить отображение модуля
- pygame.display.get_init () — Если дисплейный модуль был инициализирован, вернуть True
- pygame.display.set_mode () — Инициализирует окно или экран для отображения
- pygame.display.get_surface () — Получить текущий отображаемый объект Surface
- pygame.display.flip () — Обновляет весь объект Surface для отображения на экране
- pygame.display.update () — Обновляет часть отображения интерфейса программного обеспечения
- pygame.display.get_driver () — Получить имя серверной части дисплея Pygame
- pygame.display.Info () — Создать информационный объект об интерфейсе дисплея
- pygame.display.get_wm_info () — Получить информацию о текущей оконной системе
- pygame.display.list_modes () — получает разрешение, которое можно использовать в полноэкранном режиме
- pygame.display.mode_ok () — Выбрать наиболее подходящую глубину цвета для режима отображения
- pygame.display.gl_get_attribute () — Получить значение атрибута текущего интерфейса отображения OpenGL
- pygame.display.gl_set_attribute () — Установить значение атрибута OpenGL для текущего режима отображения
- pygame.display.get_active () — возвращает True, когда текущий интерфейс дисплея отображается на экране
- pygame.display.iconify () — Свернуть отображаемый объект Surface
- pygame.display.toggle_fullscreen () — переключение между полноэкранным и оконным режимами
- pygame.display.set_gamma () — Изменяет гамма-рампу, отображаемую оборудованием
- pygame.display.set_gamma_ramp () — настраивает и изменяет гамма-рампу, отображаемую оборудованием
- pygame.display.set_icon () — Изменить значок окна отображения
- pygame.display.set_caption() — Set the current window caption
- pygame.display.get_caption() — Get the current window caption
- pygame.display.set_palette() — Set the display color palette for indexed displays
Этот модуль предоставляет различные функции для управления интерфейсом отображения Pygame (display). Pygame’s Surface Объект может отображаться в виде окна или в полноэкранном режиме. Когда вы создаете и отображаете обычный Surface После объекта изменения на объекте не будут немедленно отражены на видимом экране.Вы должны выбрать функцию переворота, чтобы отобразить измененный экран.
Отображаемое начало координат — это положение (x = 0, y = 0) и верхнего левого угла экрана. Ось координат увеличивается в правом нижнем углу.
На самом деле отображение Pygame можно инициализировать несколькими способами. По умолчанию дисплей действует как программный буфер кадра. Кроме того, вы можете использовать специальные модули, поддерживающие аппаратное ускорение и OpenGL. Они контролируются передачей параметра flags в pygame.display.set_mode ().
Pygame допускает только один интерфейс отображения в любое время. Новый интерфейс отображения, созданный с помощью pygame.display.set_mode (), автоматически заменит старый. Если вам нужно точно контролировать формат пикселей или разрешение экрана, используйте pygame.display.mode_ok (), pygame.display.list_modes () и pygame.display.Info () для запроса информации об интерфейсе дисплея.
однажды Surface Создается интерфейс отображения объекта, и функция этого модуля влияет только на текущий интерфейс отображения. Если модуль не инициализирован, Surface Объект также станет «нелегальным». Если установлен новый режим отображения, текущий Surface Объект автоматически переключится на новый интерфейс отображения.
Когда установлен новый режим отображения, несколько связанных событий будут помещены в очередь событий Pygame. Когда используется для закрытия программы, будет отправлено событие pygame.QUIT; когда интерфейс дисплея получает и теряет фокус, окно получит событие pygame.ACTIVEEVENT; если интерфейс дисплея установлен с флагом pygame.RESIZABLE, тогда, когда пользователь регулирует размер окна , Будет отправлено событие Pygame.VIDEORESIZE; аппаратный дисплей означает, что при получении события pygame.VIDEOEXPOSE часть окна, которую необходимо перерисовать, отображается непосредственно на экране.
В некоторых средах отображения есть возможность автоматически растягивать все окна. Когда эта опция активирована, автоматическое растягивание искажает внешний вид окна Pygame. В каталоге примеров Pygame есть демонстрационный код (prevent_display_stretching.py), который показывает, как отключить свойство автоматического растягивания отображения Pygame в системах Microsoft (системы выше Vista).
Описание функции
pygame.display.init()
Инициализируйте модуль дисплея.
Инициализировать модуль отображения Pygame. До инициализации модуль дисплея ничего не может делать. Но когда вы вызываете pygame.init () более высокого уровня, изменение автоматически вызывает pygame.display.init () для инициализации.
После инициализации Pygame автоматически выберет один из нескольких внутренних модулей отображения. Режим отображения определяется платформой и текущими полномочиями пользователя. Перед инициализацией модуля отображения можно использовать переменную среды SDL_VIDEODRIVER, чтобы установить, какой серверный модуль отображения будет использоваться. К системам с несколькими серверными модулями отображения относятся следующие:
Windows : windib, directx
Unix : x11, dga, fbcon, directfb, ggi, vgl, svgalib, aalib
На некоторых платформах вы можете встроить отображение Pygame в существующее окно. Если вы это сделаете, переменная среды SDL_WINDOWID должна быть установлена в строку, содержащую идентификатор окна или дескриптор. Когда отображение Pygame инициализировано, переменные среды будут проверены. Обратите внимание, что встраивание отображения в работающее окно может иметь много странных побочных эффектов.
Нет проблем с вызовом этой функции несколько раз, но эффекта нет.
pygame.display.quit()
Закройте модуль дисплея.
Эта функция закроет весь дисплейный модуль. Это будет означать, что любой активный интерфейс дисплея будет закрыт. Эта функция также будет вызываться автоматически при выходе из основной программы.
Нет проблем с вызовом этой функции несколько раз, но эффекта нет.
pygame.display.get_init()
Если модуль дисплея был инициализирован, верните True.
Если модуль дисплея был инициализирован, верните True.
pygame.display.set_mode()
Инициализируйте окно или экран для отображения.
set_mode(resolution=(0,0), flags=0, depth=0) -> Surface
Эта функция создаст Surface Интерфейс отображения объекта. Переданные параметры используются для определения типа отображения. Окончательный созданный интерфейс дисплея будет максимально соответствовать текущей операционной системе.
Параметр разрешения — это кортеж из двух элементов, представляющий ширину и высоту. Параметр flags представляет собой набор дополнительных опций. Параметр глубины указывает используемую глубину цвета.
возвращение Surface Объект может быть как обычный Surface Объект нарисован так, но происходящие изменения со временем отобразятся на экране.
Если параметр разрешения не передан или используется настройка по умолчанию (0, 0), а Pygame использует SDL1.2.10 или новее, созданный объект Surface будет иметь то же разрешение, что и текущий пользователь экрана. Если только одна из ширины или высоты установлена на 0, то объект Surface заменит ее шириной или высотой разрешения экрана. Если версия SDL ниже 1.2.10, будет создано исключение.
Вообще говоря, лучше всего не передавать параметр глубины. Потому что по умолчанию Pygame выберет лучшую и самую быструю глубину цвета в соответствии с текущей операционной системой. Если вашей игре действительно нужен особый цветовой формат, вы можете сделать это, управляя параметром глубины. Pygame потребуется больше времени для имитации нестандартной глубины цвета.
При использовании полноэкранного режима отображения иногда не удается полностью подобрать необходимое разрешение. В этом случае Pygame автоматически выберет наиболее подходящее разрешение для использования, и вернет Surface Объект останется в соответствии с требуемым разрешением.
Параметр flags определяет желаемый тип отображения. Вам предлагается несколько вариантов. Вы можете использовать несколько типов одновременно с помощью битовых операций (оператор вертикальной черты «|»). Если вы передадите параметр 0 или без флагов, по умолчанию будет использоваться окно программного драйвера. Вот несколько вариантов, предоставляемых параметром flags:
Параметры
смысл
pygame.FULLSCREEN Создать полноэкранный дисплей pygame.DOUBLEBUF 1. Режим двойной буферизации
2. Рекомендуется использовать с HWSURFACE или OPENGL. pygame.HWSURFACE Аппаратное ускорение, доступно только для ПОЛНОЭКРАННОГО pygame.OPENGL Создание отображения с визуализацией OPENGL pygame.RESIZABLE Создать окно с изменяемым размером pygame.NOFRAME Создать окно без границ и кнопок управления
pygame.display.get_surface()
Получить текущий отображаемый Поверхностный объект.
Вернуть текущий отображаемый Surface Объект. Если режим отображения не установлен, возвращается значение None.
pygame.display.flip()
Обновите все для отображения Поверхность объекта на экране.
Эта функция обновит содержимое всего интерфейса дисплея. Если в вашем режиме отображения используются флаги pygame.HWSURFACE (аппаратное ускорение) и pygame.DOUBLEBUF (двойная буферизация), вы дождетесь вертикальной развертки и переключите интерфейс дисплея. Если вы используете другой тип режима отображения, он просто обновит содержимое всего интерфейса дисплея.
При использовании режима отображения pygame.OPENGL (с использованием рендеринга OPENGL) будет создана область переключения буфера gl.
Напоминание: вертикальный откат — это измерение времени, связанное с отображением видео. Оно представляет собой временной интервал между концом одного кадра и началом следующего кадра.
pygame.display.update()
Обновите часть отображения интерфейса программного обеспечения.
Эту функцию можно рассматривать как оптимизированную версию функции pygame.display.flip (), отображаемой в программном интерфейсе. Это позволяет обновлять часть экрана без необходимости обновления полностью. Если параметры не переданы, функция обновляет весь интерфейс так же, как pygame.display.flip ().
Вы можете передать в эту функцию одну или несколько прямоугольных областей. Одновременное прохождение нескольких прямоугольных областей более эффективно, чем многократное прохождение. Если передан пустой список или None, параметр будет проигнорирован.
Эта функция не может быть вызвана в режиме отображения pygame.OPENGL, в противном случае будет выдано исключение.
pygame.display.get_driver()
Получите имя серверной части дисплея Pygame.
При инициализации Pygame выберет один из нескольких доступных бэкэндов отображения. Эта функция возвращает имя, используемое внутренне серверной частью дисплея. Может использоваться для предоставления некоторой информации об ускорении работы дисплея. Вы можете обратиться к переменной среды SDL_VIDEODRIVER в pygame.display.set_mode ().
pygame.display.Info()
Создайте информационные объекты об интерфейсе дисплея.
Создайте объект, содержащий описание некоторых свойств текущей графической среды. На некоторых платформах, если эта функция вызывается перед pygame.display.set_mode (), она может предоставить некоторую информацию о режиме отображения по умолчанию. Вы также можете вызвать эту функцию после настройки режима отображения, чтобы убедиться, что параметры отображения удовлетворительны.
Возвращенный объект VideoInfo содержит следующие свойства:
Атрибуты
смысл
hw Если это True, это означает, что аппаратное ускорение включено. wm Если это True, это означает отображение оконного режима. video_mem Указывает, сколько мегабайт (МБ) в видеопамяти, 0 означает, что не ясно bitsize Указывает, сколько бит хранится в каждом пикселе bytesize Указывает, сколько байтов хранится в каждом пикселе masks 4 значения используются для упаковки значения RGBA пикселя shifts 4 значения используются для упаковки значения RGBA пикселя losses 4 значения используются для упаковки значения RGBA пикселя blit_hw Если это True, это означает, что аппаратный Surface Рисунок объекта blit_hw_CC Если это True, это означает, что аппаратный Surface Цветовой рисунок объекта blit_hw_A Если это True, это означает, что аппаратный Surface Рисовать объект пиксель альфа blit_sw Если это True, это означает, что ускорение осуществляется программным способом. Surface Рисунок объекта blit_sw_CC Если это True, это означает, что ускорение осуществляется программным способом. Surface Цветовой рисунок объекта blit_sw_A Если это правда, это означает, что программный Surface Альфа-рисунок пикселя объекта current_w, current_h 1. Указывает ширину и высоту текущего режима отображения (если вызывается перед display.set_mode (), это означает ширину и высоту текущего рабочего стола)
2. current_w, current_h поддерживаются после Pygame 1.8.0 и SDL 1.2.10.
3. -1 означает ошибку или версия SDL слишком старая.
pygame.display.get_wm_info()
Получить информацию о текущей оконной системе.
Создайте словарь, заполненный данными операционной системы. Некоторые операционные системы могут не заполнять информацию и возвращать пустой словарь. Большинство платформ вернут ключ «окна», соответствующее значение — это системный идентификатор текущего интерфейса дисплея.
Pygame 1.7.1 добавлен недавно.
pygame.display.list_modes()
Получите разрешение, которое можно использовать в полноэкранном режиме.
list_modes(depth=0, flags=pygame.FULLSCREEN) -> list
Эта функция возвращает список, содержащий все разрешения, поддерживаемые указанной глубиной цвета. Если режим отображения не является полноэкранным, возвращается пустой список. Если он возвращает -1, поддерживается любое разрешение (аналогично оконному режиму). Возвращенный список отсортирован от наибольшего к наименьшему.
Если глубина цвета равна 0, SDL выберет текущую / наиболее подходящую глубину цвета для отображения. Значение по умолчанию для параметра flags — pygame.FULLSCREEN, но вам может потребоваться добавить дополнительные флаги полноэкранного режима.
pygame.display.mode_ok()
Выберите наиболее подходящую глубину цвета для режима отображения.
mode_ok(size, flags=0, depth=0) -> depth
Эта функция использует те же параметры, что и функция pygame.display.set_mode (). Обычно используется, чтобы определить, доступен ли режим отображения. Если режим отображения не может быть установлен, возвращается 0. В нормальных условиях возвращается требуемая для дисплея глубина пикселей.
Обычно вас не волнует параметр глубины, если только некоторые платформы не поддерживают несколько глубин отображения, он подскажет, какая глубина цвета более подходящая.
Наиболее полезными параметрами флагов являются pygame.HWSURFACE, pygame.DOUBLEBUF и pygame.FULLSCREEN. Если эти флаги не поддерживаются, функция возвращает 0.
pygame.display.gl_get_attribute()
Получить значение атрибута текущего интерфейса дисплея OpenGL.
После вызова функции pygame.display.set_mode () с установленным флагом pygame.OPENGL рекомендуется проверять значения атрибутов OpenGL. Обратитесь к pygame.display.gl_set_attribute () для получения списка допустимых флагов.
pygame.display.gl_set_attribute()
Установите значение атрибута OpenGL для текущего режима отображения.
gl_set_attribute(flag, value) -> None
При вызове функции pygame.display.set_mode () с установленным флагом pygame.OPENGL Pygame автоматически устанавливает некоторые значения атрибутов OpenGL, такие как цвет и двойной буфер. OpenGL фактически предоставляет вам некоторые другие значения атрибутов. Передайте имя атрибута в параметре флага и установите его значение в параметре значения. Эта функция должна быть установлена перед pygame.display.set_mode ().
Эти флаги OPENGL:
GL_ALPHA_SIZE, GL_DEPTH_SIZE, GL_STENCIL_SIZE, GL_ACCUM_RED_SIZE,
GL_ACCUM_GREEN_SIZE, GL_ACCUM_BLUE_SIZE, GL_ACCUM_ALPHA_SIZE,
GL_MULTISAMPLEBUFFERS, GL_MULTISAMPLESAMPLES, GL_STEREO
pygame.display.get_active()
Верните True, когда на экране отображается текущий интерфейс дисплея.
После вызова функции pygame.display.set_mode () на экране отобразится объект Surface. Большинство окон поддерживают скрытие, если отображается Surface Объект скрыт и свернут, тогда функция вернет False.
pygame.display.iconify()
Сверните отображаемое Surface Объект.
Сверните или скройте отображаемый объект Surface. Не все операционные системы поддерживают интерфейс минимизированного дисплея. Если функция успешно вызвана, она возвращает True.
Когда интерфейс дисплея свернут, pygame.display.get_active () возвращает False. Очередь событий получит событие ACTIVEEVENT.
pygame.display.toggle_fullscreen()
Переключение между полноэкранным и оконным режимами.
Переключение между полноэкранным и оконным режимами. Эта функция работает только с драйвером дисплея unix x11. В большинстве случаев рекомендуется вызвать pygame.display.set_mode (), чтобы создать новый режим отображения для переключения.
pygame.display.set_gamma()
Измените гамма-рампу, отображаемую оборудованием.
set_gamma(red, green=None, blue=None) -> bool
Установите значения гаммы красного, зеленого и синего, отображаемые драйвером оборудования. Если зеленый и синий параметры не переданы, они будут равны значению красного. Не все операционные системы и оборудование поддерживают гамма-изменение. Если функция изменена успешно, она возвращает True.
Значение гаммы 1.0 создает линейную таблицу цветов, более низкое значение затемняет экран, а более высокое значение делает экран переменной.
pygame.display.set_gamma_ramp()
Настроить и изменить гамма-рампу, отображаемую оборудованием
set_gamma_ramp(red, green, blue) -> bool
Используйте настраиваемую таблицу, чтобы установить красную, зеленую и синюю гамма-кривые, отображаемые драйвером оборудования. Каждый параметр должен быть списком 256-битных целых чисел. Каждое целое число должно быть от 0 до 0xffff. Не все операционные системы и оборудование поддерживают гамма-изменение. Если функция изменена успешно, она возвращает True.
pygame.display.set_icon()
Измените значок окна дисплея.
Установите значок при открытии окна дисплея. Все операционные системы по умолчанию используют простой ЛОГОТИП Pygame в виде значка.
Вы можете пройти в любой Surface Объект используется как значок, но для большинства операционных систем требуется, чтобы размер значка был 32 * 32. Значок может установить прозрачность цвета.
Некоторые операционные системы не позволяют изменять значок окна на дисплее. Для этого типа операционной системы этой функции необходимо создать и установить значок перед вызовом pygame.display.set_mode ().
pygame.display.set_caption()
Установите строку заголовка текущего окна.
set_caption(title, icontitle=None) -> None
Если в окне дисплея есть строка заголовка, эта функция изменит текст строки заголовка окна. Некоторые операционные системы поддерживают переключение строки заголовка, когда окно свернуто, путем установки параметра icontitle.
pygame.display.get_caption()
Получить строку заголовка текущего окна.
get_caption() -> (title, icontitle)
Вернуть строку заголовка текущего окна и свернуть строку заголовка, обычно эти два значения совпадают.
pygame.display.set_palette()
Установите палитру интерфейса дисплея.
Эта функция изменяет 8-битную палитру интерфейса дисплея. Это не изменит фактическую цветовую палитру объекта Surface и используется только для отображения объекта Surface. Если параметры не переданы, будет восстановлена системная палитра по умолчанию. Палитра представляет собой последовательность троек RGB.
Интеллектуальная рекомендация
IView CDN Загрузка значка шрифта нормальная, а значок шрифта не может быть загружен при локальной загрузке JS и CSS
Используйте iview, чтобы сделать небольшой инструмент. Чтобы не затронуть другие платформы, загрузите JS и CSS CDN на локальные ссылки. В результате значок шрифта не может быть загружен. Просмо.
Критическое: ошибка настройки прослушивателя приложения класса org.springframework.web.context.ContextLoaderLis
1 Обзор Серверная программа, которая обычно запускалась раньше, открылась сегодня, и неожиданно появилась эта ошибка. Интуитивно понятно, что не хватает связанных с Spring пакетов, но после удаления п.
1086 Не скажу (15 баллов)
При выполнении домашнего задания друг, сидящий рядом с ним, спросил вас: «Сколько будет пять умножить на семь?» Вы должны вежливо улыбнуться и сказать ему: «Пятьдесят три». Это.
Pandas применяют параллельный процесс приложения, многоядерная скорость очистки данных
В конкурсе Algorith Algorith Algorith Algorith Algorith 2019 года используется многофункциональная уборка номера ускорения. Будет использовать панды. Но сама панда, кажется, не имеет механизма для мно.
PureMVC Learning (Tucao) Примечания
Справочная статья:Введение подробного PrueMVC Использованная литература:Дело UnityPureMvc Основная цель этой статьи состоит в том, чтобы организовать соответствующие ресурсы о PureMVC. Что касается Pu.
Источник
У меня была аналогичная проблема в очень простом фрагменте кода:
import sys, pygame
pygame.init()
size = width, height = 640, 480
speed = [2, 2]
black = 0, 0, 0
screen = pygame.display.set_mode(size)
ball = pygame.image.load("Golfball.png")
ballrect = ball.get_rect()
while 1:
event = pygame.event.poll()
if event.type == pygame.QUIT:
pygame.quit()
ballrect = ballrect.move(speed)
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1]
screen.fill(black)
screen.blit(ball, ballrect)
pygame.display.flip()
pygame.time.delay(5)
Сообщение об ошибке было:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "bounce.py", line 22, in <module>
screen.fill(black)
pygame.error: display Surface quit
Я положил
import pdb
вверху после
pygame.init()
и использовали
pdb.set_trace()
после линия с
pygame.quit()
Теперь я запустил программу, щелкнул, чтобы закрыть окно, и был немного удивлен, увидев, что попал в отладчик (в конце концов, я ожидал, что выход полностью отключит меня сразу). Итак, я пришел к выводу, что выход на самом деле не останавливает все на этом этапе. Выглядело так, как будто программа продолжалась и после увольнения, доходила до
screen.fill(black)
и это было причиной проблемы. Я добавил
break
после
pygame.quit()
и теперь все работает счастливо.
[Добавлено позже: мне пришло в голову, что
pygame.quit()
выходит из модульи не программа, которая работает, так что вам нужен перерыв чтобы выйти из этой простой программы. ]
На заметку, это означает, что хорошая версия
import sys, pygame
pygame.init()
size = width, height = 640, 480
speed = [2, 2]
black = 0, 0, 0
screen = pygame.display.set_mode(size)
ball = pygame.image.load("Golfball.png")
ballrect = ball.get_rect()
while 1:
event = pygame.event.poll()
if event.type == pygame.QUIT:
pygame.quit()
break
ballrect = ballrect.move(speed)
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1]
screen.fill(black)
screen.blit(ball, ballrect)
pygame.display.flip()
pygame.time.delay(5)
- Table of contents
- Pygame error: display surface quit: Why?
- Pygame error: pygame.error: display Surface quit
- Python/Pygame : “pygame.error: display Surface quit”
-
Python pygame.quit()
Examples - Pygame.display.quit
- Display Surface quit
Pygame error: display surface quit: Why?
import sys, pygame pygame.init() size = width, height = 640, 480 speed = [2, 2] black = 0, 0, 0 screen = pygame.display.set_mode(size) ball = pygame.image.load("Golfball.png") ballrect = ball.get_rect() while 1: event = pygame.event.poll() if event.type == pygame.QUIT: pygame.quit() ballrect = ballrect.move(speed) if ballrect.left < 0 or ballrect.right > width: speed[0] = -speed[0] if ballrect.top < 0 or ballrect.bottom > height: speed[1] = -speed[1] screen.fill(black) screen.blit(ball, ballrect) pygame.display.flip() pygame.time.delay(5)
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "bounce.py", line 22, in <module> screen.fill(black) pygame.error: display Surface quit
import pdb
pygame.init()
pdb.set_trace()
pygame.quit()
screen.fill(black)
break
pygame.quit()
pygame.quit()
import sys, pygame pygame.init() size = width, height = 640, 480 speed = [2, 2] black = 0, 0, 0 screen = pygame.display.set_mode(size) ball = pygame.image.load("Golfball.png") ballrect = ball.get_rect() while 1: event = pygame.event.poll() if event.type == pygame.QUIT: pygame.quit() break ballrect = ballrect.move(speed) if ballrect.left < 0 or ballrect.right > width: speed[0] = -speed[0] if ballrect.top < 0 or ballrect.bottom > height: speed[1] = -speed[1] screen.fill(black) screen.blit(ball, ballrect) pygame.display.flip() pygame.time.delay(5)
import pygame, sys running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() # quit the screen running = False sys.exit()
class PauseMenu(pygame.Surface)
pygame.Surface.__init__(self, (width, height))
pygame.quit()
sys.exit()
pygame.quit() sys.exit()
import copy,pygame,sys from pygame.locals import * EMPTY_IMG= pygame.image.load('C:super/fancy/file/path/transparent.png') held_image=copy.deepcopy(EMPTY_IMG) my_rect=held_image.get_rect() my_rect.center = (50,50) screen.blit(held_image,my_rect)
import copy,pygame,sys from pygame.locals import * EMPTY_IMG= pygame.image.load('C:super/fancy/file/path/transparent.png') held_image=EMPTY_IMG my_rect=held_image.get_rect() my_rect.center = (50,50) screen.blit(held_image,my_rect)
Pygame error: pygame.error: display Surface quit
1 Answer. In your main_menu loop you are telling it to loop while local boolean run == True. This is okay, but you should as people mentioned in the comments do a pygame.quit () and optionally quit () (closes the window) instead of the pygame.display.quit () and sys.exit () that you have right now. The second problem occurs if you start the
for event in pygame.event.get(): if event.type == pygame.QUIT: run == False if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: current_piece.x -= 1 if not (valid_space(current_piece, grid)): current_piece.x += 1 if event.key == pygame.K_RIGHT: current_piece.x += 1 if not (valid_space(current_piece, grid)): current_piece.x -= 1 if event.key == pygame.K_DOWN: current_piece.y += 1 if not (valid_space(current_piece, grid)): current_piece.y -= 1 if event.key == pygame.K_UP: current_piece.rotation += current_piece.rotation + 1 % len(current_piece.shape) if not (valid_space(current_piece, grid)): current_piece.rotation -= 1 shape_pos = convert_shape_format(current_piece) for i in range(len(shape_pos)): x, y = shape_pos[i] if y > -1: grid[y][x] = current_piece.color if change_piece: for pos in shape_pos: p = (pos[0], pos[1]) locked_positions[p] = current_piece.color current_piece = next_piece next_piece = get_shape() change_piece = False score += clear_rows(grid, locked_positions) * 10 draw_window(win, grid, score, last_score) draw_next_shape(next_piece, win) pygame.display.update() if check_lost(locked_positions): draw_text_middle(win, "You Lost!", 80, (255,255,255)) pygame.display.update() pygame.time.delay(1500) run = False update_score(score) def main_menu(win): run = True while run: win.fill((0,0,0)) draw_text_middle(win, 'Press any key to play', 60, (255,255,255)) pygame.display.update() for event in pygame.event.get(): if event.type == pygame.QUIT: run = False pygame.display.quit() sys.exit() if event.type == pygame.KEYDOWN: main(win) pygame.display.QUIT() win = pygame.display.set_mode((s_width, s_height)) pygame.display.set_caption('Tetris') main_menu(win)
def main_menu(win): run = True while run: win.fill((0,0,0)) draw_text_middle(win, 'Press any key to play', 60, (255,255,255)) pygame.display.update() for event in pygame.event.get(): if event.type == pygame.QUIT: run = False pygame.quit() quit() if event.type == pygame.KEYDOWN: main(win) pygame.quit() win = pygame.display.set_mode((s_width, s_height)) pygame.display.set_caption('Tetris') main_menu(win)
for event in pygame.event.get(): if event.type == pygame.QUIT: run = False pygame.quit() quit()
Python/Pygame : “pygame.error: display Surface quit”
Python/Pygame : “pygame.error: display Surface quit” So, I’m making a game project, and I decided, for once, to make a custom class for my pygame window, like so :
class Screen(pygame.Surface): """Class for making a screen""" def __init__(self, width: int, height: int): """Screen Class Constructor""" self = pygame.display.set_mode((width, height)) def _events(self): """Events Handler""" for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() def _fill(self, color): self.fill(color)
._fill()
# Importing import pygame import ScreenClass import StaticsClass # Class with multiple colors # Functions def main(): """Main function, where all the game happens..""" scr = ScreenClass.Screen(800, 600) print(type(scr)) while True: scr._fill(StaticsClass.Color.BLACK0) scr._events() if __name__ == '__main__': main()
Traceback (most recent call last): File "C:UsersPCDesktopPYTHONJeuxA While Agomainloop.py", line 17, in <module> main() File "C:UsersPCDesktopPYTHONJeuxA While Agomainloop.py", line 13, in main scr._fill(StaticsClass.Color.BLACK0) File "C:UsersPCDesktopPYTHONJeuxA While AgoScreenClass.py", line 22, in _fill self.fill(color) pygame.error: display Surface quit
self = pygame.display.set_mode((width, height))
def __init__(self, width: int, height: int): """Screen Class Constructor""" super().__init__((width, height)) self = pygame.display.set_mode((width, height))
Python pygame.quit()
Examples
The following are 30 code examples of pygame.quit().You can vote up the ones you like or vote down the ones you don’t like, and go to the original project or source file by following the links above each example.
def _handle_keyboard_shortcuts(self): while self._running: event = pygame.event.wait() if event.type == pygame.KEYDOWN: # If pressed key is ESC quit program if event.key == pygame.K_ESCAPE: self._print("ESC was pressed. quitting...") self.quit() if event.key == pygame.K_k: self._print("k was pressed. skipping...") self._player.stop(3) if event.key == pygame.K_s: if self._playbackStopped: self._print("s was pressed. starting...") self._playbackStopped = False else: self._print("s was pressed. stopping...") self._playbackStopped = True self._player.stop(3)
def ShowStartInterface(screen, screensize): screen.fill((255, 255, 255)) tfont = pygame.font.Font(cfg.FONTPATH, screensize[0]//5) cfont = pygame.font.Font(cfg.FONTPATH, screensize[0]//20) title = tfont.render(u'滑雪游戏', True, (255, 0, 0)) content = cfont.render(u'按任意键开始游戏', True, (0, 0, 255)) trect = title.get_rect() trect.midtop = (screensize[0]/2, screensize[1]/5) crect = content.get_rect() crect.midtop = (screensize[0]/2, screensize[1]/2) screen.blit(title, trect) screen.blit(content, crect) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == pygame.KEYDOWN: return pygame.display.update()
def GameStartInterface(screen, sounds, cfg): dino = Dinosaur(cfg.IMAGE_PATHS['dino']) ground = pygame.image.load(cfg.IMAGE_PATHS['ground']).subsurface((0, 0), (83, 19)) rect = ground.get_rect() rect.left, rect.bottom = cfg.SCREENSIZE[0]/20, cfg.SCREENSIZE[1] clock = pygame.time.Clock() press_flag = False while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE or event.key == pygame.K_UP: press_flag = True dino.jump(sounds) dino.update() screen.fill(cfg.BACKGROUND_COLOR) screen.blit(ground, rect) dino.draw(screen) pygame.display.update() clock.tick(cfg.FPS) if (not dino.is_jumping) and press_flag: return True
def _idle_message(self): """Print idle message from file reader.""" # Print message to console. message = self._reader.idle_message() self._print(message) # Do nothing else if the OSD is turned off. if not self._osd: return # Display idle message in center of screen. label = self._render_text(message) lw, lh = label.get_size() sw, sh = self._screen.get_size() self._screen.fill(self._bgcolor) self._screen.blit(label, (sw/2-lw/2, sh/2-lh/2)) # If keyboard control is enabled, display message about it if self._keyboard_control: label2 = self._render_text('press ESC to quit') l2w, l2h = label2.get_size() self._screen.blit(label2, (sw/2-l2w/2, sh/2-l2h/2+lh)) pygame.display.update()
def __startInterface(self): clock = pygame.time.Clock() while True: for event in pygame.event.get(): if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): pygame.quit() sys.exit(-1) if event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN: return self.screen.fill(self.cfg.AQUA) text1 = 'Press <Enter> to start the game' text2 = 'Press <Esc> to quit the game' text_render1 = self.font_big.render(text1, False, self.cfg.BLUE) text_render2 = self.font_big.render(text2, False, self.cfg.BLUE) self.screen.blit(text_render1, ((self.cfg.SCREENWIDTH-text_render1.get_rect().width)//2, (self.cfg.SCREENHEIGHT-text_render1.get_rect().height)//4)) self.screen.blit(text_render2, ((self.cfg.SCREENWIDTH-text_render2.get_rect().width)//2, (self.cfg.SCREENHEIGHT-text_render2.get_rect().height)//2)) pygame.display.flip() clock.tick(30)
def startInterface(screen, begin_image_paths): begin_images = [pygame.image.load(begin_image_paths[0]), pygame.image.load(begin_image_paths[1])] begin_image = begin_images[0] while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == pygame.MOUSEMOTION: mouse_pos = pygame.mouse.get_pos() if mouse_pos[0] in list(range(419, 574)) and mouse_pos[1] in list(range(374, 416)): begin_image = begin_images[1] else: begin_image = begin_images[0] elif event.type == pygame.MOUSEBUTTONDOWN: mouse_pos = pygame.mouse.get_pos() if event.button == 1 and mouse_pos[0] in list(range(419, 574)) and mouse_pos[1] in list(range(374, 416)): return True screen.blit(begin_image, (0, 0)) pygame.display.update()
def start_interface(screen): clock = pygame.time.Clock() while True: button_1 = BUTTON(screen, (330, 190), '单人模式') button_2 = BUTTON(screen, (330, 305), '双人模式') for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if button_1.collidepoint(pygame.mouse.get_pos()): return 1 elif button_2.collidepoint(pygame.mouse.get_pos()): return 2 clock.tick(60) pygame.display.update()
def end_interface(screen): clock = pygame.time.Clock() while True: button_1 = BUTTON(screen, (330, 190), '重新开始') button_2 = BUTTON(screen, (330, 305), '退出游戏') for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if button_1.collidepoint(pygame.mouse.get_pos()): return elif button_2.collidepoint(pygame.mouse.get_pos()): pygame.quit() sys.exit() clock.tick(60) pygame.display.update()
def startInterface(screen): screen.fill(Config.get('bg_color')) clock = pygame.time.Clock() while True: button_1 = BUTTON(screen, (95, 150), '开始游戏') button_2 = BUTTON(screen, (95, 305), '退出游戏') for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if button_1.collidepoint(pygame.mouse.get_pos()): return elif button_2.collidepoint(pygame.mouse.get_pos()): quitGame() clock.tick(60) pygame.display.update()
def switchInterface(screen): screen.fill(Config.get('bg_color')) clock = pygame.time.Clock() while True: button_1 = BUTTON(screen, (95, 150), '进入下关') button_2 = BUTTON(screen, (95, 305), '退出游戏') for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if button_1.collidepoint(pygame.mouse.get_pos()): return elif button_2.collidepoint(pygame.mouse.get_pos()): quitGame() clock.tick(60) pygame.display.update()
def endInterface(screen, color, is_win): screen.fill(color) clock = pygame.time.Clock() if is_win: text = 'VICTORY' else: text = 'FAILURE' font = pygame.font.SysFont('arial', 30) text_render = font.render(text, 1, (255, 255, 255)) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if (event.type == pygame.KEYDOWN) or (event.type == pygame.MOUSEBUTTONDOWN): return screen.blit(text_render, (350, 300)) clock.tick(60) pygame.display.update()
def showEndGameInterface(screen, exitcode, accuracy, game_images): font = pygame.font.Font(None, 24) text = font.render(f"Accuracy: {accuracy}%", True, (255, 0, 0)) text_rect = text.get_rect() text_rect.centerx = screen.get_rect().centerx text_rect.centery = screen.get_rect().centery + 24 while True: screen.fill(0) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if exitcode: screen.blit(game_images['youwin'], (0, 0)) else: screen.blit(game_images['gameover'], (0, 0)) screen.blit(text, text_rect) pygame.display.flip()
def startInterface(screen): clock = pygame.time.Clock() while True: screen.fill((41, 36, 33)) button_1 = Button(screen, (150, 175), '1 Player') button_2 = Button(screen, (150, 275), '2 Player') for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if button_1.collidepoint(pygame.mouse.get_pos()): return 1 elif button_2.collidepoint(pygame.mouse.get_pos()): return 2 clock.tick(10) pygame.display.update()
def endInterface(screen, score_left, score_right): clock = pygame.time.Clock() font1 = pygame.font.Font(config.FONTPATH, 30) font2 = pygame.font.Font(config.FONTPATH, 20) msg = 'Player on left won!' if score_left > score_right else 'Player on right won!' texts = [font1.render(msg, True, config.WHITE), font2.render('Press ESCAPE to quit.', True, config.WHITE), font2.render('Press ENTER to continue or play again.', True, config.WHITE)] positions = [[120, 200], [155, 270], [80, 300]] while True: screen.fill((41, 36, 33)) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_RETURN: return elif event.key == pygame.K_ESCAPE: sys.exit() pygame.quit() for text, pos in zip(texts, positions): screen.blit(text, pos) clock.tick(10) pygame.display.update()
def main(): pygame.init() display = (800,600) pygame.display.set_mode(display, DOUBLEBUF|OPENGL) gluPerspective(45, (display[0]/display[1]), 0.1, 50.0) glTranslatef(0.0,0.0, -5) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() glRotatef(1, 3, 1, 1) glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) Cube() pygame.display.flip() pygame.time.wait(10)
def check_event(self): """イベントハンドラ""" for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN and event.key == K_ESCAPE: pygame.quit() sys.exit() # 表示されているウィンドウに応じてイベントハンドラを変更 if self.game_state == TITLE: self.title_handler(event) elif self.game_state == FIELD: self.field_handler(event) elif self.game_state == COMMAND: self.cmd_handler(event) elif self.game_state == TALK: self.talk_handler(event)
def title_handler(self, event): """タイトル画面のイベントハンドラ""" if event.type == KEYUP and event.key == K_UP: self.title.menu -= 1 if self.title.menu < 0: self.title.menu = 0 elif event.type == KEYDOWN and event.key == K_DOWN: self.title.menu += 1 if self.title.menu > 2: self.title.menu = 2 if event.type == KEYDOWN and event.key == K_SPACE: sounds["pi"].play() if self.title.menu == Title.START: self.game_state = FIELD self.map.create("field") # フィールドマップへ elif self.title.menu == Title.CONTINUE: pass elif self.title.menu == Title.EXIT: pygame.quit() sys.exit()
def check_event(self): """イベントハンドラ""" global game_state for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN and event.key == K_ESCAPE: pygame.quit() sys.exit() # 表示されているウィンドウに応じてイベントハンドラを変更 if game_state == TITLE: self.title_handler(event) elif game_state == FIELD: self.field_handler(event) elif game_state == COMMAND: self.cmd_handler(event) elif game_state == TALK: self.talk_handler(event) elif game_state == BATTLE_INIT: self.battle_init_handler(event) elif game_state == BATTLE_COMMAND: self.battle_cmd_handler(event) elif game_state == BATTLE_PROCESS: self.battle_proc_handler(event)
def title_handler(self, event): """タイトル画面のイベントハンドラ""" global game_state if event.type == KEYUP and event.key == K_UP: self.title.menu -= 1 if self.title.menu < 0: self.title.menu = 0 elif event.type == KEYDOWN and event.key == K_DOWN: self.title.menu += 1 if self.title.menu > 2: self.title.menu = 2 if event.type == KEYDOWN and event.key == K_SPACE: sounds["pi"].play() if self.title.menu == Title.START: game_state = FIELD self.map.create("field") # フィールドマップへ elif self.title.menu == Title.CONTINUE: pass elif self.title.menu == Title.EXIT: pygame.quit() sys.exit()
def main(): pygame.init() screen = pygame.display.set_mode(SCR_RECT.size) pygame.display.set_caption(u"Breakout 01 パドルを動かす") # スプライトグループを作成して登録 all = pygame.sprite.RenderUpdates() Paddle.containers = all # パドルを作成 paddle = Paddle() clock = pygame.time.Clock() while True: clock.tick(60) screen.fill((0,0,0)) all.update() all.draw(screen) pygame.display.update() for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN and event.key == K_ESCAPE: pygame.quit() sys.exit()
def replay(self, screen, score, circuit_grid_model, circuit_grid): """Pause the game and ask if the player wants to play again""" blink_time = pygame.time.get_ticks() while not self.restart: for event in pygame.event.get(): pygame.event.pump() if event.type == QUIT: pygame.quit() else: self.restart = True if self.restart: # reset all parameters to restart the game score.reset_score() circuit_grid_model.reset_circuit() circuit_grid.update() circuit_grid.reset_cursor() # Make blinking text if pygame.time.get_ticks()-blink_time > 1000: blink_time = pygame.time.get_ticks() if pygame.time.get_ticks()-blink_time > 500: replay_text = "Press Any Key to Play Again" text = REPLAY_FONT.render(replay_text, 1, WHITE) text_pos = text.get_rect(center=(WINDOW_WIDTH / 2, WIDTH_UNIT * 40)) screen.blit(text, text_pos) pygame.display.flip() else: # show a black box to blink the text every 0.5s pygame.draw.rect(screen, BLACK, (WIDTH_UNIT * 10, WIDTH_UNIT * 35, WIDTH_UNIT * 80, WIDTH_UNIT * 10)) pygame.display.flip() # reset restart flag when self.restart = True and the while ends self.restart = False
def quit(self): """Shut down the program""" self._print("quitting Video Looper") self._running = False if self._player is not None: self._player.stop() pygame.quit()
def signal_quit(self, signal, frame): """Shut down the program, meant to by called by signal handler.""" self._print("received signal to quit") self.quit() # Main entry point.
def close(): pygame.quit() sys.exit() videoFeed.release() cv2.destroyAllWindows()
def close(): pygame.quit() sys.exit() videoFeed.release() cv2.destroyAllWindows()
def close(): pygame.quit() sys.exit() videoFeed.release() cv2.destroyAllWindows()
def display(): global entities, lock, width, height, done pygame.init() pygame.display.set_caption('generator') screen = pygame.display.set_mode((width, height)) clock = pygame.time.Clock() while not done: for event in pygame.event.get(): if event.type == pygame.QUIT: done = True screen.fill(pygame.color.Color('black')) lock.acquire() entities = [entity for entity in entities if not entity.done] for i, entity in enumerate(entities): if i + 1 < len(entities): next_ent = entities[i + 1] pygame.draw.line(screen, entity.get_color(), entity.position, next_ent.position) for entity in entities: entity.render(screen) entity.update() lock.release() pygame.display.flip() clock.tick(60) pygame.quit() #==================================================================== # Synth #====================================================================
def ShowEndInterface(screen, width, height): screen.fill(cfg.BACKGROUNDCOLOR) font = pygame.font.Font(cfg.FONTPATH, width//15) title = font.render('恭喜! 你成功完成了拼图!', True, (233, 150, 122)) rect = title.get_rect() rect.midtop = (width/2, height/2.5) screen.blit(title, rect) pygame.display.update() while True: for event in pygame.event.get(): if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): pygame.quit() sys.exit() pygame.display.update()
def ShowStartInterface(screen, width, height): screen.fill(cfg.BACKGROUNDCOLOR) tfont = pygame.font.Font(cfg.FONTPATH, width//4) cfont = pygame.font.Font(cfg.FONTPATH, width//20) title = tfont.render('拼图游戏', True, cfg.RED) content1 = cfont.render('按H或M或L键开始游戏', True, cfg.BLUE) content2 = cfont.render('H为5*5模式, M为4*4模式, L为3*3模式', True, cfg.BLUE) trect = title.get_rect() trect.midtop = (width/2, height/10) crect1 = content1.get_rect() crect1.midtop = (width/2, height/2.2) crect2 = content2.get_rect() crect2.midtop = (width/2, height/1.8) screen.blit(title, trect) screen.blit(content1, crect1) screen.blit(content2, crect2) while True: for event in pygame.event.get(): if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): pygame.quit() sys.exit() elif event.type == pygame.KEYDOWN: if event.key == ord('l'): return 3 elif event.key == ord('m'): return 4 elif event.key == ord('h'): return 5 pygame.display.update()
def update(self, screen): clock = pygame.time.Clock() while True: clock.tick(60) self.components.update() self.components.draw(screen) pygame.display.flip() for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit(0) pygame.quit() elif event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: mouse_pos = pygame.mouse.get_pos() if self.PB.rect.collidepoint(mouse_pos): return True elif self.QB.rect.collidepoint(mouse_pos): return False
Pygame.display.quit
Here are the examples of the python api pygame.display.quit taken from open source projects. By voting up you can indicate which examples are most useful and appropriate. By voting up you can indicate which examples are most useful and appropriate.
def quit_game(self): """Ferme le jeu""" try: self.player.save() self.bag.save() # Fermeture de la base de donnée self.save.commit() self.save.close() self.game_data_db.close() self.db_connexion.close() except sql.ProgrammingError: print("Impossible d'accéder à la base de donnée lors de la sauvegarde. Cela peut être dû à une réinitialisation des données...") pg.display.quit() pg.quit() def tick(self):
def shutdown(self): """shutdown visuals""" pygame.display.quit() pygame.quit() def draw_car(self, kwargs):
def send(sendstr): global timestart try: builtstr = chr(0X02)+sendstr+chr(0X03) sock.send(builtstr.encode(encoding='utf-8')) if cmdwrite: f2.write(str(time()-timestart)+','+sendstr+'n') except: sock.close() pygame.display.quit() sys.exit() timestart = time() def playmacro(filename):
def send(sendstr): global timestart try: builtstr = chr(0X02)+sendstr+chr(0X03) sock.write(builtstr.encode(encoding='utf-8')) if cmdwrite: f2.write(str(time()-timestart)+','+sendstr+'n') except: sock.close() pygame.display.quit() sys.exit() timestart = time() def playmacro(filename):
def send(sendstr): try: sock.write(sendstr.encode(encoding='utf-8')) except: sock.close() pygame.display.quit() sys.exit() pygame.font.init()
def send(sendstr): global timestart try: sock.send(sendstr.encode(encoding='utf-8')) if cmdwrite: f2.write(str(time()-timestart)+','+sendstr+'n') except: sock.close() pygame.display.quit() sys.exit() timestart = time() pygame.font.init()
def render(self, mode='human', close=False): if close or (self.rendering_state == RenderingState.disable): if self.is_init_rendering: pygame.display.quit() return elif not self.is_init_rendering: self.init_rendering() self.reset_image() self.redraw() pygame.display.update() self.user_interaction() def save_render(self, path_save, verbose=False):
def cleanup(self): self.m_PGoJoyHandler.quit() pygame.display.quit() pygame.quit() self.__clean() # clean system def __clean(self):
def run(self): """Invoke the main loop, and then clean up.""" try: self.mainloop() finally: pygame.display.quit() pygame.mixer.quit() def inject_global_handlers(self):
def close( self, ) -> None: pygame.display.quit() pygame.quit() # pygame has to be again initialized, otherwise window does not close pygame.init()
def close( self, ) -> None: # self.graphics.quit() pygame.display.quit() pygame.quit() # pygame has to be again initialized, otherwise window does not close pygame.init()
def quit_game(self): try: self.__game_over = True if self.__enable_render is True: pygame.display.quit() pygame.quit() except Exception: pass def move_robot(self, dir):
def shouldStop(self): types = [e.type for e in self.events] if self._shouldStop or QUIT in types: pygame.display.quit() return True def isKeyPressed(self, key):
def quit(self): pygame.display.quit() def GetRadarData(self,MyPosition,MyViewmatrix,Transform):
def terminate_gui(): ''' Closes pygame gui window ''' pg.display.quit() pg.quit()
def render(self, mode='human', close=False): if close: pygame.display.quit() pygame.quit() self.window = None return self._initialse_window() self.__draw_render_states() #img = self._get_image() #if mode == 'rgb_array': # return img # elif mode == 'human': # from gym.envs.classic_control import rendering # if self.viewer is None: # self.viewer = rendering.SimpleImageViewer(SCREEN_WIDTH, SCREEN_HEIGHT) # self.viewer.imshow(img) def _initialse_window(self):
def render(self, mode='human', close=False): if close: pygame.display.quit() pygame.quit() self.window = None return self._initialse_window() self._draw_render_states(mode) img = self._get_image() if mode == 'rgb_array': return img # elif mode == 'human': # from gym.envs.classic_control import rendering # if self.viewer is None: # self.viewer = rendering.SimpleImageViewer(SCREEN_WIDTH, SCREEN_HEIGHT) # self.viewer.imshow(img) def _initialse_window(self):
def close(self): pygame.display.quit() Window.instance = None def write_lines(self, text, line=0):
def tearDown(self): display.quit() def test_update(self):
def tearDown(self): pygame.display.quit() def test_get(self):
def tearDown(self): # fastevent.quit() # Does not exist! pygame.display.quit() def test_init(self):
def tearDown(self): pygame.display.quit() def test_surface_to_array_2d(self):
def tearDownClass(cls): # scrap.quit() # Does not exist! pygame.display.quit() def test_init(self):
def test_convert_init(self): """ Ensure initialization exceptions are raised for surf.convert().""" pygame.display.quit() surf = pygame.Surface((1, 1)) self.assertRaisesRegex(pygame.error, 'display initialized', surf.convert) pygame.display.init() try: if os.environ.get('SDL_VIDEODRIVER') != 'dummy': try: surf.convert(32) surf.convert(pygame.Surface((1, 1))) except pygame.error: self.fail("convert() should not raise an exception here.") self.assertRaisesRegex(pygame.error, 'No video mode', surf.convert) pygame.display.set_mode((640,480)) try: surf.convert() except pygame.error: self.fail("convert() should not raise an exception here.") finally: pygame.display.quit() def test_convert_alpha_init(self):
def test_convert_alpha_init(self): """ Ensure initialization exceptions are raised for surf.convert_alpha().""" pygame.display.quit() surf = pygame.Surface((1, 1)) self.assertRaisesRegex(pygame.error, 'display initialized', surf.convert_alpha) pygame.display.init() try: self.assertRaisesRegex(pygame.error, 'No video mode', surf.convert_alpha) pygame.display.set_mode((640,480)) try: surf.convert_alpha() except pygame.error: self.fail("convert_alpha() should not raise an exception here.") finally: pygame.display.quit() def todo_test_convert(self):
def tearDown(self): pygame.display.quit() def test_copy(self):
def tearDown(self): pygame.display.quit() _test_palette = [(0, 0, 0, 255),
def tearDown(self): pygame.display.quit() def test_fill(self):
def tearDownClass(cls): pygame.display.quit() def test_num_devices(self):
def tearDown(self): pygame.display.quit() def test_flip(self):
def send(sendstr): global sendtwice try: if sendstr == '200200Z': if sendtwice < 2: builtstr = chr(0X02)+sendstr+chr(0X03) sock.send(builtstr.encode(encoding='utf-8')) sendtwice += 1 else: builtstr = chr(0X02)+sendstr+chr(0X03) sock.send(builtstr.encode(encoding='utf-8')) sendtwice = 0 except: sock.close() pygame.display.quit() sys.exit() # This is a simple class that will help us print to the screen. # It has nothing to do with the joysticks, just outputting the # information. class TextPrint(object):
def send(sendstr): global timestart global sendtwice try: if sendstr == '200200Z': if sendonce < 2: builtstr = chr(0X02)+sendstr+chr(0X03) sock.send(builtstr.encode(encoding='utf-8')) sendtwice += 1 if cmdwrite: f2.write(str(time()-timestart)+','+sendstr+'n') else: builtstr = chr(0X02)+sendstr+chr(0X03) sock.send(builtstr.encode(encoding='utf-8')) sendtwice = 0 if cmdwrite: f2.write(str(time()-timestart)+','+sendstr+'n') except: sock.close() pygame.display.quit() sys.exit() timestart = time() def playmacro(filename):
def main_run(): input_loc = 'to_crop.jpg' #output_loc = 'out.png' screen, px = setup(input_loc) left, upper, right, lower = mainLoop(screen, px) if right < left: left, right = right, left if lower < upper: lower, upper = upper, lower im = Image.open(input_loc) to_crop_width, to_crop_height = im.size pygame.display.quit() return (left, upper, right, lower, to_crop_width, to_crop_height) def setup(path):
def _pygame_unload(self): pygame.display.quit() pygame.quit() def _prepare_color(self, p_sColor):
def tearDownClass(self): pygame.display.quit() def test_sensible_init_defaults(self):
def tearDownClass(cls): pygame.display.quit() def setUp(self):
def tearDownClass(cls): """Shut down the display.""" pygame.display.quit() def setUp(self):
def quit(self): pygame.display.quit() pygame.quit() def draw(self, img):
def close(self): pygame.display.quit() pygame.quit() def _get_units(self):
def close(self): pygame.display.quit()
def quit_game(self): self.game_over = True if self.enable_render is True: pygame.display.quit() pygame.quit()
Display Surface quit
The solution for “display Surface quit” can be found here. The following code will assist you in solving the problem.
import pygame running = True while running: for event in pygame.event.get_pressed(): if event.type == pygame.QUTI: running = False if not(running): pygame.quit() break #you got the error because you didn’t completely close pygame so add #so add break after pygame.quit()
Next Lesson PHP Tutorial
Может ли кто-нибудь сказать мне, почему мое приложение закрывается с:
Ошибка pygame: отображение поверхности завершено.
10 ответов
У меня была аналогичная проблема в очень простом фрагменте кода:
import sys, pygame
pygame.init()
size = width, height = 640, 480
speed = [2, 2]
black = 0, 0, 0
screen = pygame.display.set_mode(size)
ball = pygame.image.load("Golfball.png")
ballrect = ball.get_rect()
while 1:
event = pygame.event.poll()
if event.type == pygame.QUIT:
pygame.quit()
ballrect = ballrect.move(speed)
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1]
screen.fill(black)
screen.blit(ball, ballrect)
pygame.display.flip()
pygame.time.delay(5)
Сообщение об ошибке было:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "bounce.py", line 22, in <module>
screen.fill(black)
pygame.error: display Surface quit
Я положил
import pdb
Вверху после
pygame.init()
И использовал
pdb.set_trace()
после строки с
pygame.quit()
Теперь я запустил программу, щелкнул, чтобы закрыть окно, и был немного удивлен, увидев, что попал в отладчик (в конце концов, я ожидал, что выход полностью отключит меня сразу). Итак, я пришел к выводу, что бросить на самом деле не останавливает все на этом этапе. Выглядело так, как будто программа продолжалась и после увольнения, доходила до
screen.fill(black)
И это было причиной проблемы. Я добавил
break
После
pygame.quit()
И теперь все работает счастливо.
[Добавлено позже: мне пришло в голову, что
pygame.quit()
Закрывает модуль , а не запущенную программу, поэтому вам понадобится перерыв , чтобы выйти из этой простой программы. ]
На заметку, это означает, что хорошая версия
import sys, pygame
pygame.init()
size = width, height = 640, 480
speed = [2, 2]
black = 0, 0, 0
screen = pygame.display.set_mode(size)
ball = pygame.image.load("Golfball.png")
ballrect = ball.get_rect()
while 1:
event = pygame.event.poll()
if event.type == pygame.QUIT:
pygame.quit()
break
ballrect = ballrect.move(speed)
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1]
screen.fill(black)
screen.blit(ball, ballrect)
pygame.display.flip()
pygame.time.delay(5)
5
Robert
2 Мар 2012 в 13:33
import pygame, sys
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit() # quit the screen
running = False
sys.exit()
Вызовите sys.exit () после pygame.quit (), чтобы остановить программу, чтобы вы не могли изменить поверхность после выхода из pygame и не получить ошибку
2
cCe.jbc
17 Фев 2016 в 17:47
Из http://archives.seul.org/pygame/users/Nov. -2006 / msg00236.html:
Чт, 30 ноября 2006 г., 21:27 -0300, Николас Бишоф написал:
pygame.error: display Surface quit, что это значит? Я не могу это исправить
Это означает, что был сделан вызов pygame.display.quit () или pygame.quit (). Если вы попытаетесь сделать что-либо с поверхностью дисплея после выхода, вы получите эту ошибку.
1
Hamish Grubijan
4 Янв 2010 в 17:43
У меня тоже была эта проблема, и, как и ответ Maciej Miąsik, мой был связан с copy.deepcopy () — изображением.
Я имел:
import copy,pygame,sys
from pygame.locals import *
EMPTY_IMG= pygame.image.load('C:super/fancy/file/path/transparent.png')
held_image=copy.deepcopy(EMPTY_IMG)
my_rect=held_image.get_rect()
my_rect.center = (50,50)
screen.blit(held_image,my_rect)
И у меня такая же ошибка.
Я просто изменил copy.deepcopy (EMPTY_IMG) на EMPTY_IMG.
import copy,pygame,sys
from pygame.locals import *
EMPTY_IMG= pygame.image.load('C:super/fancy/file/path/transparent.png')
held_image=EMPTY_IMG
my_rect=held_image.get_rect()
my_rect.center = (50,50)
screen.blit(held_image,my_rect)
Тогда все заработало нормально.
0
hammythepig
14 Май 2012 в 18:12
Заменить if event.type == pygame.quit():
на if event.type == pygame.QUIT:
4
charlesreid1
10 Янв 2020 в 22:56
Убедитесь, что вы пишете pygame.QUIT:
, а не pygame.quit():
Я знаю, это звучит странно, но у меня была такая же проблема.
3
Yayati Sule
10 Янв 2020 в 23:16
У меня была аналогичная проблема, и я обнаружил, что объекты Surface не любят глубокое копирование. Когда я использовал copy.deepcopy () для такого объекта, а затем получил доступ к копии, я получил это странное сообщение об ошибке (без вызова pygame.quit ()). Может быть, вы испытываете подобное поведение?
11
Maciej Miąsik
30 Ноя 2010 в 22:37
У меня тоже была эта проблема, но она возникла из другого источника.
У меня был класс, определенный следующим образом:
class PauseMenu(pygame.Surface)
У меня возникла ошибка, когда я забыл инициализировать pygame.Surface и попытался его скопировать, что привело к сбою pygame.screen и выдало мне эту ошибку.
Так что я просто добавил это, очевидно
pygame.Surface.__init__(self, (width, height))
1
Johan Bjäreholt
27 Апр 2013 в 22:40
Просто обновите отображение в бесконечном цикле.
Введите это:
Pygame.display.update ( )
-1
Prasanna MG
19 Сен 2022 в 03:31
Прямо сейчас у меня была похожая проблема, и я нашел ее решение.
Поскольку кажется, что pygame.quit () просто закроет модуль pygame, а не всю программу, используйте метод sys.exit () в следующей строке.
После этого:
pygame.quit()
Поместите это:
sys.exit()
Полный фрагмент:
pygame.quit()
sys.exit()
1
Eve
18 Мар 2021 в 17:05