使用turtle graphics绘制多边形报_tkinter.TclError: invalid command name ".!canvas"错
报错原因
- 核心触发原因:代码执行完绘图逻辑后直接退出,没有维持turtle绘图窗口的运行,底层依赖的Tkinter画布资源被提前释放,后续尝试操作画布时就会抛出该无效命令错误
- 额外逻辑错误:多边形转角计算逻辑错误,当前用了取模运算符
%,实际需要用除法计算每个外角的角度,360度除以边数才是正多边形每次需要左转的角度,错误的角度计算会导致最终无法画出预期的正多边形
修复方法
- 修正角度计算代码,将
angle = 360%n替换为angle = 360 / n - 在代码的最后一行添加
turtle.mainloop(),阻塞程序退出,维持绘图窗口和底层Tkinter资源的正常运行
修复后的完整代码如下:
import turtle bob = turtle.Turtle() def polygon(t,length,n): angle = 360 / n for i in range(n): t.fd(length) t.lt(angle) polygon(bob,70,7) turtle.mainloop()
内容的提问来源于stack exchange,提问作者Himasha
相关产品推荐
相关产品推荐

