我正在用pygame构建一个小游戏。我希望游戏的窗口大小是显示器分辨率的大小。我的计算机屏幕的分辨率是1920x1080,display.info说窗口大小也是1920x1080,但是当我运行它时,它会创建一个大约是屏幕大小一半的窗口。
import pygame, sys
def main():
#set up pygame, main clock
pygame.init()
clock = pygame.time.Clock()
#creates an object with the computers display information
#current_h, current_w gives the monitors height and width
displayInfo = pygame.display.Info()
#set up the window
windowWidth = displayInfo.current_w
windowHeight = displayInfo.current_h
window = pygame.display.set_mode ((windowWidth, windowHeight), 0, 32)
pygame.display.set_caption('game')
#gameLoop
while True:
window.fill((0,0,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
#draw the window onto the screen
pygame.display.flip()
clock.tick(60)
main()
答案 0 :(得分:4)
我遇到了同样的问题,我找到了答案并发布了here。我找到的答案如下:
我设法在Pygame BitBucket页面上找到了一个提交,解释了这个问题并给出了一个如何解决它的例子。
正在发生的事情是,某些显示环境可以配置为拉伸窗口,以便它们在高PPI(每英寸像素数)显示器上看起来不小。这种拉伸是导致较大分辨率的显示显示大于实际值的原因。
他们在我链接的页面上提供了示例代码,以展示如何解决此问题。
他们通过导入ctypes并调用它来解决问题:
ctypes.windll.user32.SetProcessDPIAware()
他们还表示这是一个仅限Windows的解决方案,并且自Python 2.4以来在基础Python中可用。在此之前,它需要安装。
话虽如此,为了使这项工作,将这段代码放在pygame.display.set_mode()之前的任何地方
import ctypes
ctypes.windll.user32.SetProcessDPIAware()
#
# # # Anywhere Before
#
pygame.display.set_mode(resolution)
我希望这可以帮助您和其他发现他们遇到同样问题的人。