我做了一个奇怪的程序,可以绘制分形,圆和螺旋,我已经尝试了几个小时,以找到一种方法,以保存海龟输出到一个图像文件(最好是png或jpeg)。当我试图在海龟上使用_Screen()时,我会得到‘canvasvg.saveall’对象没有属性'tk‘。以下是代码:
import turtle
import random
import canvasvg
root = turtle.Screen()
drawing = 1
def save():
canvasvg.saveall("spircles.svg", root)
print("turning angle:")
turningangle = float(input())
print("size:")
forward = float(input())
print("spiral:")
try:
spiral = float(input())
if spiral == None:
spiral = random.random()
except:
pass
spiral = random.random()
turtle = turtle.Turtle(visible=False)
turtle.speed(speed=0)
turtle.hideturtle()
turtle.ht()
print("drawing. spiral:", spiral)
try:
while drawing == 1:
root.listen()
root.onkey(save, "s")
turtle.left(turningangle)
turtle.forward(forward)
turningangle += spiral
spiral += (spiral / turningangle)
except Exception as e:
drawing = 0
pass
print("done. press enter to exit. error:", e)
input()
exit()
turtle.mainloop()有人知道一个简单的方法吗?已经试过PIL了但没起作用。我也不想安装第三方程序。我希望能够安装一些模块与pip (如果必要的话),并能够运行它没有麻烦。当用户按下"s“时,它应该保存到图像文件中。
我已经尝试过PIL和canvasvg.saveall(),我想要canvasvg.saveall(),因为它似乎是最简单的方法。
发布于 2022-10-31 11:24:12
虽然Turtle使用tkinter.Canvas绘制形状,但Screen对象不是tkinter.Canvas对象,也不是tkinter.Widget。海龟为这个任务提供了一个方法,它叫做turtle.getcanvas,你可以在你的对象上使用它。所以canvas = root.getcanvas()应该工作得很好。
您似乎可以使用canvasvg.saveall(filename, canvas),但请注意,它们的状态是并非所有项目都受支持。。
def save():
canvas = root.getcanvas()
canvasvg.saveall("spircles.svg", canvas)https://stackoverflow.com/questions/74257785
复制相似问题