Получите ориентацию экрана с помощью Python

Я сделал простую игру, используя Python и Pygame.

Игра работает в обеих ориентациях (портретная и альбомная), так как я играю в той же ориентации, что и при открытии игры.

Если я поверну устройство, изменив ориентацию во время работы игры, все окажется не в том месте.

Проблема в том, что я не знаю, как определить, что устройство было повернуто, чтобы правильно перерисовать экран.

Тогда мой вопрос:

Как я могу определить, что пользователь повернул устройство, используя только код Python или Pygame?

ВАЖНО: предложения не должны относиться к какой-либо конкретной ОС, потому что один и тот же код должен работать на ноутбуках с сенсорным экраном (под управлением Linux, Windows или OS X) и мобильных устройствах (под управлением Android или iOS).

НАБЛЮДЕНИЕ: я попытался создать другой экран, чтобы получить его размер и сравнить с фактическим экраном с помощью pygame.display.set_mode (), но этот новый экран вернул тот же размер, что и фактический экран, вместо того, чтобы его ширина была равна фактической высоте экрана.

Спасибо за вашу помощь.


person Fernando Lima    schedule 08.10.2020    source источник


Ответы (1)


Вы должны установить флаг RESIZABLE при создании поверхности отображения с помощью set_mode(). При изменении логического разрешения экрана возникает VIDEORESIZE событие:

screen = pygame.set_mode((0, 0), pygame.FULLSCREEN | pygame.pygame.RESIZABLE)
width, height = screen.get_size()
while run:

    for event in pygame.event.get():
    
        if event.type == pygame.VIDEORESIZE:
             width, height = event.w, event.h
person Rabbid76    schedule 09.10.2020
comment
Спасибо. Я попробую. Это именно то, что я хотел. - person Fernando Lima; 09.10.2020