Pygame从全屏切换到正常不起作用

问题描述

我目前正在尝试设置从窗口模式和全屏模式切换。但是进入全屏并尝试返回后,游戏错误非常奇怪并粘在左上角

顺便说一句: 显示宽度 = 1280 显示高度 = 720

    elif (Settings_Menu == True):
        screen.fill((0,0))
        screen.blit(settingsscreen,(0,0))
        for event in pygame.event.get():
            if event.type == pygame.MOUSEBUTTONDOWN:
                if event.button == 1:
                    if checkBox1.collidepoint(event.pos):
                        if(Fullscreen == False):
                            Fullscreen = True
                            screen = pygame.display.set_mode((display_width,display_height),pygame.FULLSCREEN)
                        else:
                            Fullscreen = False
                            screen = pygame.display.set_mode((display_width,pygame.RESIZABLE)

解决方法

使用 pygame.display.toggle_fullscreen() 在全屏和窗口显示之间切换。

for event in pygame.event.get():
    if event.type == pygame.MOUSEBUTTONDOWN:
        if event.button == 1:
            if checkbox1.collidepoint(event.pos):
                pygame.display.toggle_fullscreen()

文档 documentation 提到使用 Pygame 1 时显示驱动程序支持“不是很好”,但它应该适用于 Pygame 2 中的以下显示驱动程序:

  • 窗口 (Windows)
  • x11 (Linux/Unix)
  • wayland (Linux/Unix)
  • 可可 (OSX/Mac)

但是,在撰写此答案时,Windows 的 toggle_fullscreen 中存在一个错误:

display.toggle_fullscreen does not work when toggling a maximized window to fullscreen #2380

,

这是 pygame 2.0 和 2.0.1 中的一个已知错误。在 github 上报告 here

那里的作者还找到了一种解决方法,您可以在切换全屏之间退出 pygame。

不幸的是,toggle_fullscreen 文档是错误的。它不适用于 Windows。 Reported on github

现在你可能会认为 - pygame 有太多的全屏问题,这是合理的。但他们正在修复。我为您的问题提交了一个 patch,该问题已于一周前合并,并将包含在 pygame 2.0.2 中。