使用 canvasvg.saveall() 打印海龟图形 canvas

printing turtle-graphics canvas with canvasvg.saveall()

我尝试了在此站点上找到的以下内容:

from turtle import *
import canvasvg

def saveImg():
    name = input("What would you like to name it? ")
    nameSav = name + ".svg"
    ts = getscreen().getcanvas()
    canvasvg.saveall(nameSav, ts)

penup()
goto(-60,-225)
pendown()
left(90)
hideturtle()
speed(0)
forward(20)

saveImg()

这是我收到的错误信息:

File "test.py", line 18, in <module>
    saveImg()
  File "test.py", line 8, in saveImg
    saveall(nameSav, ts)
NameError: name 'saveall' is not defined

我知道 canvasvg 包含 saveall() 的定义,所以我不明白为什么它找不到这个函数。

在我刚开始编码时,请帮助并尽量让你的答案简单明了 ;)

如果 canvasvg 包含 saveall,那么您必须执行 canvasvg.saveall()。如果 saveallturtle 内,那么你会拥有它,因为你在 from turtle import *.

您的另一个选择是将 import canvasvg 更改为 from canvasvg import *I don't recommend it.


更新:

我尝试 运行 你的脚本,我注意到,实际上,canvasvg 包含两个不同的子模块:canvasvg.canvasvgcanvasvg.setup。我不知道为什么。但是,您可以只替换:

import canvasvg

有:

from canvasvg import canvasvg

然后你可以调用canvasvg.saveall().

不过,我发现there is a bug在上一个Python3版本的canvasvg中。因此,您应该等待 canvasvg 开发人员修复它,或者您可以使用 Python 2 版本的 canvasvg。

如果要切换到Python 2,只需将input更改为raw_input。我测试过,它似乎完美无缺。