使用Python获取屏幕方向

问题描述

我使用Python和Pygame做了一个简单的游戏。

由于我的游戏方向与打开游戏时的方向相同,因此游戏可以同时在两个方向(纵向和横向)上运行。

如果我在运行游戏时旋转设备以更改方向,则所有内容都会显示在错误的位置。

问题是我不知道如何检测到设备已旋转以正确重绘屏幕。

然后,我的问题是:

如何检测到用户仅使用Python或Pygame代码旋转了设备?

重要提示:建议不应与任何特定的操作系统有关,因为相同的代码必须在带有触摸屏(运行Linux,Windows或OS X)和移动设备(运行Android或iOS)的笔记本上运行。

观察:我试图创建另一个屏幕以获取其尺寸,并使用pygame.display.set_mode()与实际屏幕进行比较,但是此新屏幕返回的尺寸与实际屏幕相同,而不是其宽度等于实际屏幕高度。

感谢您的帮助。

解决方法

通过set_mode()生成显示表面时,必须设置RESIZABLE标志。当逻辑显示分辨率改变时,您将得到VIDEORESIZE event

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...