Python Turtle库end_poly()方法未按预期闭合多边形问题咨询
Turtle中
end_poly()未自动绘制闭合线条的问题分析 嘿,我来帮你捋清楚这个Turtle多边形的问题~首先先对照官方文档的描述:
调用
end_poly()时,会停止记录多边形顶点,当前海龟位置为多边形最后一个顶点,该顶点会与第一个顶点连接。
但你实际测试下来(不管Python2.7还是3.7),都发现从最后顶点回到第一个顶点的线条没被画出来对吧?我把你的测试内容整理如下:
测试代码
from turtle import * print("position 0:",position()) width(5) pencolor("red") fillcolor("blue") begin_fill() begin_poly() fd(100) print("position 1:",position()) left(90) fd(100) print("position 2:",position()) end_poly() end_fill() p = get_poly() print("poly p:",p) register_shape("myShape",p) shapes_ = getshapes() print("shapes_:", shapes_)
输出结果
position 0: (0.00,0.00) position 1: (100.00,0.00) position 2: (100.00,100.00) poly p: ((0.00,0.00), (100.00,0.00), (100.00,100.00)) shapes_: ['arrow', 'blank', 'circle', 'classic', 'myShape', 'square', 'triangle', 'turtle']
视觉效果
绘制出来的图形是一个红色边框的直角(仅两条边),内部填充了蓝色,但确实缺少从(100.00,100.00)回到(0.00,0.00)的闭合线条。
原因解释
这里其实是对文档描述的理解偏差:begin_poly()和end_poly()的核心作用是记录顶点坐标,用于生成自定义海龟形状,官方说的“顶点会与第一个顶点连接”,是指在生成的多边形数据逻辑上是闭合的(比如你后续用register_shape注册这个形状后,海龟切换成该形状时会显示闭合图形),但它并不会在当前的绘图流程中自动画出这条闭合线。
如果想要在绘图时看到完整的闭合边框,你需要手动添加回到起点的代码,比如在end_poly()之前加上goto(0, 0)或者home(),这样就能画出最后一条闭合边了。
内容的提问来源于stack exchange,提问作者user3808252
相关产品推荐
相关产品推荐

