pygame.error没有足够大的视频模式

问题描述 投票:1回答:2

我一直在使用pygame模块为python开发一个游戏,并且遇到了让它在其他计算机上正常显示的问题。当我第一次开始写作时,我选择了(1400,1000)的分辨率。这个选择没有真正的理由,我/我是编程的新手,它看起来像一个很好的圆数。我遇到的问题是,在许多笔记本电脑上,屏幕大于最大分辨率。我可以在窗口模式下运行它,但屏幕会向右和向下运行,并且有些东西是用户看不到的。然后我尝试在全屏模式下运行它,但后来我收到错误消息“pygame.error没有足够大的视频模式1400,1000”

最明显的解决方案是降低我的屏幕分辨率,但是我的所有GUI菜单按钮都显示在屏幕上,假设分辨率为(1400,1000)并且更改所有内容将非常繁琐。

最奇怪的事情发生在连接USB监视器时,其分辨率足够高以便正确显示;游戏将在连接的监视器上正确显示,并且还将自己调整大小以便在笔记本电脑监视器上正确显示!然后我可以断开另一个监视器并开始玩游戏没问题!

如果我能以某种方式“欺骗”计算机思考有一个与正确分辨率连接的监视器,一切都会完美。我承认,这不是一个完美或优雅的解决方案,但我不得不回去重做我的整个GUI ......

size = (1400, 1000)
screen = pygame.display.set_mode(size,pygame.FULLSCREEN)
python pygame fullscreen
2个回答
1
投票

阅读pygame.org/docs

只要您没有传递任何参数,pygame.display.set_mode()将自动使用您当前的屏幕分辨率,无论您使用何种计算机。

至于为什么1400乘1000不适合你,这不是一个常见的屏幕分辨率(甚至不确定它是否存在)。一些常见的包括:

1280乘720

1600乘900

1920年到1200年

“最明显的解决方案是降低我的屏幕分辨率,但我所有的GUI菜单按钮都会显示在屏幕上,因为分辨率达到(1400,1000)并且更改一切都会非常繁琐。”

避免此问题的一种方法是根据屏幕区域进行操作。例如,假设我工作的结果是1280乘800。

width = 1280
height = 800
screen = pygame.display.set_mode([width, height])

我希望我的位置在屏幕中间。而不是说

position = 1280 / 2 # Hardcoded

position = width/2

现在无论您将屏幕宽度更改为什么,您的位置都将被保留。我建议查看http://www.pygame.org/docs/ref/rect.html,了解如何以一种很好的方式跟踪pygame中的位置。

关于旗帜:我对这些不太了解所以我不会说太多,除了我从不使用它们并且没有任何问题做任何事情。


0
投票

我希望这有帮助

```

from win32api import GetSystemMetrics

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

```

我会尝试将其合并到您的代码中

© www.soinside.com 2019 - 2024. All rights reserved.