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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:20:46