Python3.10使用turtle库调用penup方法报turtle.Terminator错误如何解决
错误成因
该报错由代码执行顺序错误直接导致:
turtle.mainloop()是turtle库的阻塞型事件循环接口,调用后会持续占用主线程维持绘图窗口运行,只有当用户手动关闭绘图窗口后,才会继续执行该方法之后的代码- 你将
mainloop()放在了自定义函数定义、循环绘图逻辑的前方,当窗口被关闭后,后续的绘图代码才会触发执行,但此时turtle绘图实例已经被回收销毁,调用任何turtle相关操作接口(penup、sety等)都会抛出turtle.Terminator异常。你之前修改窗口标题时出现的同类报错,也大概率是因为相关代码被放在了mainloop()之后。
修复方案
将turtle.mainloop()移动到所有绘图逻辑的末尾即可,同时建议修改函数参数名避免和导入的turtle模块重名产生命名冲突,修正后的完整代码如下:
import turtle circleRadius = 100 def drawTarget(t, radius): t.penup() t.sety(-radius) t.pendown() t.circle(radius, steps=90) turtle.tracer(False) turtle.hideturtle() for radius in range(circleRadius, 500, circleRadius): drawTarget(turtle, radius) turtle.tracer(True) # mainloop必须放在所有绘图逻辑的最后执行 turtle.mainloop()
内容的提问来源于stack exchange,提问作者CS2016
相关产品推荐
相关产品推荐

