2015-11-07 47 views
1

我想这是我在这个网站上发现了以下情况:印刷与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()的定义,所以我不明白为什么它找不到此功能。

请帮忙试试,因为我刚开始编码在你的答案简单;)

回答

1

如果canvasvg包括​​,那么你必须做canvasvg.saveall()。如果​​在turtle之内,那么您应该拥有它,因为您的确是from turtle import *

您的其他选项是将import canvasvg更改为from canvasvg import *,但是I don't recommend it


UPDATE:

我试图运行你的脚本,我注意到,实际上,canvasvg包含了两个不同的子模块:canvasvg.canvasvgcanvasvg.setup。我不知道为什么。然而,只需更换:

import canvasvg 

有了:

from canvasvg import canvasvg 

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

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

如果你想切换到Python 2,你应该只将input更改为raw_input。我测试过了,它似乎完美地工作。

+0

对不起,我发布了一个工作正在进行的代码,当我试图使其工作。我在开始时实际上使用了canvasvg.saveall(),但没有成功。你有其他建议吗? 谢谢 – Nina

+0

那么真正的错误是什么?在问题中发布的错误清楚地表明'saveall()'被用来代替'canvasvg.saveall()':) – wil93

+0

我没有运行你的脚本来查看错误,我更新了答案:) – wil93