用canvasvg.saveall()打印龟图形画布

时间:2015-11-07 16:10:36

标签: python turtle-graphics canvasvg

我尝试了以下在本网站上找到的以下内容:

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()的定义,所以我不明白为什么它找不到这个功能。

在我开始编码时,请帮助并尝试简单回答;)

1 个答案:

答案 0 :(得分:1)

如果canvasvg包含saveall,那么您必须canvasvg.saveall()。如果saveall位于turtle内,那么您可以使用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()

但是,我在canvasvg的最后一个Python 3版本中发现了there is a bug。因此,您应该等待canvasvg开发人员修复它,或者您可以使用canvasvg的Python 2版本。

如果您想切换到Python 2,则只应将input更改为raw_input。我测试了它似乎完美无缺。