pygame.error:每个像素的位数无效(范围是{8 ... 32})

时间:2014-07-22 19:00:16

标签: python pygame

我带着一个特定的问题来到这里,我还没有找到与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 个答案:

答案 0 :(得分:4)

您将pygame.FULLSCREEN放在depth参数set_mode所在的位置(请参阅the docs,这是第三个参数)。

您想要做的是组合两个标志,并将该组合作为第二个参数(flags)传递。您使用按位OR运算符(管道|)组合标志:

pygame.display.set_mode((windowx, windowy), pygame.DOUBLEBUF | pygame.FULLSCREEN)

请务必首先检查并重新检查文档以了解这些类型的问题。如果您查看此功能的文档(上面链接),在它列出可用标记之前,有这些信息可以帮助您:

  

flags参数控制您想要的显示类型。有几种可供选择,您甚至可以使用按位或运算符(管道“|”字符)组合多种类型。