如何在Pygame中获取显示器的分辨率?

25

我想知道是否可以在Pygame中获取显示器的分辨率,并使用这些尺寸创建一个窗口,以便启动程序时自动将窗口全屏适应屏幕。

我目前正在使用pygame.display.set_mode((AN_INTEGER, AN_INTEGER))来创建窗口。 我知道可以使用pygame.display.Info()获取视频信息,包括显示器分辨率,但如何提取这些值然后在pygame.display.set_mode() 中使用它们?

谢谢, Ilmiont

3个回答

48
你可以使用pygame.display.Info()docs中说道:

current_h, current_w:当前视频模式或调用display.set_mode之前的桌面模式的高度和宽度。
(自SDL 1.2.10和pygame 1.8.0起,current_h和current_w可用)如果出现错误或使用旧版SDL,则返回-1。1.8.0)

pygame.display.Info()创建一个具有属性current_hcurrent_w的Info对象。 在调用display.set_mode之前创建Info对象,然后使用对象中的current_hcurrent_w调用display.set_mode示例:
infoObject = pygame.display.Info()
pygame.display.set_mode((infoObject.current_w, infoObject.current_h))

好的回答,只是需要注意:根据操作系统的不同,窗口可能会与窗口对齐不上。 - Hack5

10

我不知道这是否有效,但如果你只想要一个全屏窗口,请使用以下内容:

pygame.display.set_mode((0,0),pygame.FULLSCREEN)

(当然,你仍然需要 import pygame)。

1
这种方法的一个问题是实际屏幕只占屏幕的一小部分。因此,这不是最佳解决方案。但是,加 1。 - 10 Rep

6

我对pygame不是很了解,但是有一种使用win32api模块的方法:

from win32api import GetSystemMetrics

width = GetSystemMetrics(0)
height = GetSystemMetrics(1)

更新:在查看文档后,似乎可以通过pygame.display.Info获取它,就像这样:
width, height = pygame.display.Info().current_w, pygame.display.Info().current_h

希望这能有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接