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

时间:2016-04-14 23:11:53

标签: python pygame fullscreen

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

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

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

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

size = (1400, 1000)
screen = pygame.display.set_mode(size,pygame.FULLSCREEN)

2 个答案:

答案 0 :(得分: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

DO

position = width/2

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

关于旗帜:我对这些不太了解所以我不会说太多,除此之外,我从不使用它们,也没有任何问题。

答案 1 :(得分:0)

我希望这会有所帮助

```

from win32api import GetSystemMetrics

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

```

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