我创建了一个多边形,例如使用Turtle,并将其保存到eps文件中,但是像箭头一样的光标保留在图像中。如何摆脱所有游标?
我尝试了hideturtle(),认为“ turtle”对于任何游标都是通用的。
polygon = turtle.Turtle()
num_sides = 6
side_length = 70
angle = 360.0 / num_sides
for i in range(num_sides):
polygon.forward(side_length)
polygon.right(angle)
ts = turtle.getscreen()
ts.getcanvas().postscript(file="hex_example.eps")
答案 0 :(得分:1)
这是很微妙的,但是这里有。您可以通过以下方法解决此问题:
ts = turtle.getscreen()
使用以下任一方法:
ts = polygon.getscreen()
或:
ts = turtle.Screen()
并放回您的:
polygon.hideturtle()
问题在于getscreen()
是 turtle 方法,因此,当您使用模块名称turtle.getscreen()
调用它时,它将应用于 default 龟。它不仅可以获取屏幕,还可以实例化默认乌龟。您在PostScript图像中看到的乌龟不是polygon
,而是未修饰的默认乌龟(您的polygon
返回回到原始位置,默认乌龟从起始位置开始)。通过切换到以上任一备用调用来获取屏幕,您无需实例化默认的乌龟。完整的解决方案:
from turtle import Screen, Turtle
num_sides = 6
side_length = 70
angle = 360.0 / num_sides
screen = Screen()
polygon = Turtle()
for _ in range(num_sides):
polygon.forward(side_length)
polygon.right(angle)
polygon.hideturtle()
screen.getcanvas().postscript(file="hex_example.eps")
这是我敦促人们使用以下方法进口乌龟的典型情况:
from turtle import Screen, Turtle
因为它只给您 用于乌龟的面向对象 API,而不是像import turtle
或from turtle import *
这样的其他导入文件,它们会留下面向对象 API和功能 API均处于活动状态。两者都活跃只会使事情变得混乱。