Когда вы вызываете pygame.event.get()
(или pump()
), pygame обрабатывает все события, которые ваш оконный менеджер отправляет окну, управляемому pygame.
Вы не видите эти события, так как они не возвращаютсяна get()
, но Pygame обрабатывает их внутренне. Эти события могут быть WM_PAINT
в Windows или Expose
в Linux (IIRC Pygame использует Xlib) или другие события (я думаю, вы можете посмотреть их в исходном коде Pygame).
Например, если вы запускаете Pygameв Windows Pygame должен вызывать функцию Windows * GetMessage
, в противном случае:
Если окно верхнего уровня перестает отвечать на сообщения в течение более нескольких секунд, система считаетокно не отвечает и заменяет его призрачным окном, имеющим тот же z-порядок, местоположение, размер и визуальные атрибуты. Это позволяет пользователю перемещать его, изменять его размер или даже закрывать приложение. Тем не менее, это единственные доступные действия, потому что приложение на самом деле не отвечает.
Так что типичное поведение, если вы не позволяете pygame обрабатывать события, это то, что оно в основном запускается, но курсор мышиизменится на занятый курсор, и вы не сможете переместить окно, пока оно не остановится.
Если вы запустите pygame в других системах, например, в Linux, вы увидите только черный экран. Я не знаю внутренностей цикла сообщений, когда pygame работает в Linux, но он похож на цикл сообщений Windows: вам нужно обработать события в очереди, чтобы pygame вызывал функцию Xlib XNextEvent (IIRC), чтобы дать возможность оконному менеджеру нарисовать окно.
См., например, Цикл сообщений в Microsoft Windows и / или Xlib для получения дополнительной информации по этой теме.