Pygame窗口可正常弹出但fill改背景、绘制图形无效应如何解决
问题原因
- 缩进错误导致刷新代码永不执行:你代码中的
pygame.display.flip()、clock.tick(60)两行位于while True无限循环的外部,程序进入循环后永远不会运行到这两行代码,你填充背景、绘制图形的操作全部只停留在显存缓冲区,从未更新到实际显示窗口,因此窗口始终是初始黑屏。 - 线条颜色与背景色重合:你调用
pygame.draw.line()时使用的绘制颜色为GREEN,和screen.fill(GREEN)设置的背景色完全一致,即使刷新逻辑正常,你也看不到绘制的线条。
修复后的代码
import pygame,sys #setup pygame.init() clock=pygame.time.Clock() #colors BLACK =( 0, 0, 0) WHITE =(255,255,255) GREEN =( 0,255, 0) RED =(255, 0, 0) BLUE =( 0, 0,255) #screen screen_width=1200 screen_height=700 # 顺带修正了原变量名的拼写错误,不影响运行 screen=pygame.display.set_mode((screen_width,screen_height)) pygame.display.set_caption ("test_game") while True: for event in pygame.event.get(): if event.type==pygame.QUIT: pygame.quit() sys.exit() screen.fill(GREEN) pygame.draw.line(screen,RED,[0,100],[100,100],5) # 线条颜色改为红色,和背景区分 pygame.display.flip() # 修正缩进,放入循环内 clock.tick(60) # 修正缩进,放入循环内
验证说明
修复后运行脚本,窗口会正常显示绿色背景,同时顶部会出现一条红色的水平线段,功能完全正常。
内容的提问来源于stack exchange,提问作者moroc333
相关产品推荐
相关产品推荐

