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
相关产品推荐
相关产品推荐

