2015-11-07 2 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 включает saveall, то вы должны сделать canvasvg.saveall(). Если saveall были внутри turtle, то у вас было бы это, потому что вы сделали from turtle import *.

Другой вариант меняется import canvasvg на from canvasvg import *, но I don't recommend it.


UPDATE:

Я попытался запустить свой сценарий, и я заметил, что, на самом деле, canvasvg содержит два различных подмодуля: canvasvg.canvasvg и canvasvg.setup. Я не знаю почему. Тем не менее, вы можете просто заменить:

import canvasvg 

С:

from canvasvg import canvasvg 

И тогда вы можете позвонить canvasvg.saveall().

Однако я обнаружил, что there is a bug в последней версии canvasvg Python 3. Таким образом, вы должны либо ждать, пока разработчики canvasvg исправит его, либо вы можете использовать версию canvasvg на Python 2.

Если вы хотите перейти на Python 2, вы должны только изменить input на raw_input. Я тестировал и, похоже, работал безупречно.

+0

Извините, я опубликовал незавершенное выполнение кода, когда попытался заставить его работать. Я фактически использовал canvasvg.saveall() в начале без успеха. Есть ли у вас другие рекомендации? Спасибо – Nina

+0

Что такое настоящая ошибка? Ошибка, поставленная в вопросе, ясно показывает, что 'saveall()' использовался вместо 'canvasvg.saveall()' :) – wil93

+0

Я запустил ваш скрипт, чтобы увидеть ошибку, и я обновил ответ :) – wil93

Смежные вопросы