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

Python turtle库绘制闭合图形时部分区域无法填充如何解决?

修复方案

核心原因

turtle的颜色填充逻辑要求绘制的路径必须完全闭合,你当前代码绘制完成后没有回到最初的起点,路径存在缺口,因此出现了局部未填充的空白区域。你之前尝试拉长线条没有生效,就是因为没有解决路径不闭合的核心问题。

具体修改方法

你只需要在最后一步绘制代码(turtl.forward(253))之后、turtl.end_fill()之前,补充一行代码闭合路径即可,两种方法选其一就行:

  • 手动回到起点:加一行 turtl.goto(-213, -75)
  • 调用自动闭合方法:加一行 turtl.close()

另外你代码里写的for i in range(1)没有实际作用,循环只会执行1次,完全可以删掉这一层循环和对应的缩进,减少冗余代码。

修复后完整代码

import turtle

turtl = turtle.Turtle()
turtle.screensize(852, 508, 'white')
turtl.penup()
turtl.fillcolor("royal blue")      # 从这里开始到end_fill()之间的所有闭合图形都会用宝蓝色填充
turtl.begin_fill()

turtl.hideturtle()
turtl.penup()
turtl.setx(-213)
turtl.sety(-75)      # 移动turtle到十字图形的起始绘制位置
turtl.right(180)
turtl.pendown()
turtl.forward(427)      # 向左画第一条线
turtl.right(90)
turtl.forward(150)      # 十字的宽度
turtl.right(90)
turtl.forward(427)
turtl.left(90)
turtl.forward(253)      # 向上画到十字顶部
turtl.right(90)
turtl.forward(150)      # 十字顶部的宽度
turtl.right(90)
turtl.forward(253)      # 从十字顶部右侧向下返回
turtl.left(90)
turtl.forward(697)      # 向右画到屏幕右侧
turtl.right(90)
turtl.forward(150)      # 十字宽度 / 十字下半部分起始
turtl.right(90)
turtl.forward(697)      # 向左返回十字底部位置
turtl.left(90)
turtl.forward(253)     # 向下画到十字底部
turtl.right(90)
turtl.forward(150)
turtl.right(90)
turtl.forward(253)      # 向上返回中心横条位置
turtl.close()   # 自动闭合路径,解决填充缺口问题

turtl.end_fill()

print(turtl)
turtle.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:36:02