pygame 可以检测屏幕的视频模式吗?

Can pygame detect the video mode of the screen?

Python和Pygame能否检测到视频mode/resolution我的屏幕是

我正在以 1920x1080 的全屏模式制作我的程序 运行,这将正常工作,因为我有一个 16:9 屏幕 @ 1920x1080 但是如果我 运行 上的代码4:3 screen @ 1024x768 然后它给我这个错误信息

pygame.error: No video mode large enough for 1920x1080

能否pygame检测到屏幕的视频mode/resolution?

是的,似乎 pygame 可以检测到您显示器中的各种设置。

首先要看的地方是 this link here,阅读它应该会给您很多关于 pygame 如何帮助您处理显示模式的信息。 如何决定部分可能对您最有用。

读完之后您应该会发现自己进入了 this link here。您将在链接后的第四段中看到:

If precise control is needed over the pixel format or display resolutions, use the functions pygame.display.mode_ok(), pygame.display.list_modes(), and pygame.display.Info() to query information about the display.

因此,最好阅读有关如何使用它们的信息并试用它们,以了解信息是如何返回和使用的。

如果您传递 (0, 0) 或不传递任何内容作为 pygame.display.set_mode 的分辨率,pygame 将使用您显示器的分辨率(如果之前调用了 display.set_mode,它将使用当前显示器的分辨率)。您也可以调用 pygame.display.list_modes() 并选择返回的分辨率之一。

顺便说一句,在 Windows 中你需要小心,因为 pygame window 可能会被拉伸。 This answer 会有帮助。

如果您需要显示器的实际尺寸,而不是要使用的最佳分辨率,您可以:

import pygame
pygame.display.init()
# Before calling *.set_mode()
i = pygame.display.Info()
width = i.current_w
height = i.current_h
print("The screen size is: (%ix%i)" %width, height))

然后你可以使用宽度和高度来pygame.display.set_mode()