我尝试了以下在本网站上找到的以下内容:
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()
的定义,所以我不明白为什么它找不到这个功能。
在我开始编码时,请帮助并尝试简单回答;)
答案 0 :(得分:1)
如果canvasvg
包含saveall
,那么您必须canvasvg.saveall()
。如果saveall
位于turtle
内,那么您可以使用from turtle import *
。
您的其他选择是将import canvasvg
更改为from canvasvg import *
,但I don't recommend it。
<强>更新强>
我尝试运行您的脚本,我注意到,实际上,canvasvg
包含两个不同的子模块:canvasvg.canvasvg
和canvasvg.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
。我测试了它似乎完美无缺。