Pygame无法绘制线条问题:代码运行后仅显示白屏
Pygame绘制线条仅显示白屏的解决方法
尝试使用Pygame绘制一条简单线条,编写的代码如下:
import pygame import sys pygame.init() width, height = 1000, 800 win = pygame.display.set_mode((width, height)) pygame.display.set_caption("Colonizer") win.fill("white") pygame.display.update() def draw(): pygame.draw.line(win, ("black"), [width,height/2], [width*2,height/2], 5) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() draw() pygame.display.update()
运行代码后仅显示白屏,线条未被绘制出来,该如何解决?
问题原因
你绘制的线条完全超出了窗口的可视范围:
- 窗口宽度设为
width=1000,线条的起始点x坐标是width(即1000),这已经是窗口的右边界;结束点x坐标是width*2(即2000),远远超出窗口范围,所以线条根本不会在屏幕上显示。
解决方法
修改draw()函数里的线条坐标,让它落在窗口的可视区域内。比如把线条从窗口左边缘(x=0)画到右边缘(x=width):
import pygame import sys pygame.init() width, height = 1000, 800 win = pygame.display.set_mode((width, height)) pygame.display.set_caption("Colonizer") def draw(): # 填充背景,避免绘制残影 win.fill("white") # 调整坐标至窗口可视范围内 pygame.draw.line(win, "black", [0, height/2], [width, height/2], 5) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() draw() pygame.display.update()
额外提示
- 把
win.fill("white")放到draw()函数内,每次循环都重新填充背景,防止动态绘制时留下残影。 - Pygame窗口的坐标原点在左上角,x轴向右递增,y轴向下递增,绘制元素的坐标需落在
(0, 0)到(width-1, height-1)区间内才能正常显示。
内容的提问来源于stack exchange,提问作者LLL
相关产品推荐
相关产品推荐

