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

