You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame全屏模式切换异常求助:切换后显示异常如何解决?

Pygame全屏切换显示异常的修复方案

问题根源

  • 窗口尺寸为浮点数:ScreenSizeMinx和ScreenSizeMiny通过除法得到浮点数,而Pygame创建窗口时要求尺寸必须是整数,这会导致窗口初始化异常
  • 切换显示模式后未重新渲染:每次切换全屏/窗口模式后,新创建的显示表面没有填充红色,也没有更新显示,导致画面出现异常
  • 退出逻辑不规范:直接调用quit()是Python内置的退出方法,没有正确释放Pygame的资源,可能导致程序残留进程

修复后的代码

import pygame
import sys  # 导入sys模块用于正确退出

pygame.init()

# 将窗口尺寸转为整数,用//整数除法避免浮点数问题
ScreenSizeMinx = pygame.display.Info().current_w // 2
ScreenSizeMiny = pygame.display.Info().current_h // 2

RED = (255, 0, 0)

# 初始化全屏窗口并填充红色
Ekran = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
Ekran.fill(RED)
pygame.display.update()
FullScreen = True

while True:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_f:
                if FullScreen:
                    # 创建窗口模式,尺寸用整数参数
                    Ekran = pygame.display.set_mode((ScreenSizeMinx, ScreenSizeMiny))
                    FullScreen = False
                else:
                    # 恢复全屏模式
                    Ekran = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
                    FullScreen = True
                # 切换后立即填充红色并更新显示
                Ekran.fill(RED)
                pygame.display.update()
        if event.type == pygame.QUIT:
            # 正确退出流程:先终止Pygame资源,再退出程序
            pygame.quit()
            sys.exit()

pygame.quit()

关键修复点

  • 把窗口尺寸改为整数:用//整数除法替代/,确保传入set_mode的尺寸是整数类型
  • 切换显示模式后强制渲染:每次按下F键切换模式后,立即执行fill(RED)和display.update(),保证新窗口显示红色
  • 修正退出逻辑:使用pygame.quit()释放资源,再用sys.exit()终止程序

内容的提问来源于stack exchange,提问作者Galoran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 10:30:46