pygame.error: 无效的每像素位数(范围为{8...32})
我来这里是因为我有一个具体的问题,还没有找到答案,跟pygame这个库有关。我的问题特别是关于如何触发全屏模式,下面这段代码就是我用来实现的:
class SHMUpyGame(object):
def __init__(self):
pygame.init() # Start up pygame
if fullscreen is False:
self.screen = pygame.display.set_mode((windowx, windowy), pygame.DOUBLEBUF)
else:
self.screen = pygame.display.set_mode((windowx, windowy), pygame.DOUBLEBUF, pygame.FULLSCREEN)
self.flags = pygame.Surface.get_flags(self.screen)
self.caption = pygame.display.set_caption("SHMUpy - Main")
self.background = pygame.Surface(self.screen.get_size()).convert()
self.clock = pygame.time.Clock()
self.font = pygame.font.SysFont('mono', 12)
但是运行后却出现了以下错误:
Traceback (most recent call last):
File "C:/SHMUPY_ENGINE/main/engineOOP.py", line 61, in <module>
SHMUpyGame().go()
File "C:/SHMUPY_ENGINE/main/engineOOP.py", line 27, in __init__
self.screen = pygame.display.set_mode((windowx, windowy), pygame.DOUBLEBUF, pygame.FULLSCREEN)
pygame.error: Invalid bits per pixel (range is {8...32})
我想这可能和pygame.FULLSCREEN有关,但我搞不清楚具体问题出在哪。
有没有人能帮我解决这个问题呢?
1 个回答
4
你把 pygame.FULLSCREEN
放在了 set_mode
函数的 depth
参数的位置(具体可以查看文档,这是第三个参数)。
你其实想做的是把这两个标志组合起来,然后把这个组合作为第二个参数(flags
)传进去。组合标志时,可以用位或运算符(也就是竖线 |
):
pygame.display.set_mode((windowx, windowy), pygame.DOUBLEBUF | pygame.FULLSCREEN)
记得在遇到这类问题时,先查看文档并仔细确认。如果你查看上面链接的这个函数的文档,在列出可用标志之前,有一段信息会对你很有帮助:
标志参数控制你想要的显示类型。有好几种可以选择,你甚至可以使用位或运算符(竖线“|”字符)来组合多种类型。