问题描述
我目前正在尝试设置从窗口模式和全屏模式切换。但是进入全屏并尝试返回后,游戏错误非常奇怪并粘在左上角
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 中。