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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:52:54