Модуль Python Turtle - сохранение изображения - PullRequest
26 голосов
/ 01 ноября 2010

Я хотел бы выяснить, как сохранить растровое или векторное графическое изображение после создания чертежа с модулем черепахи в python.После небольшого поиска я не могу найти простой ответ.Я нашел модуль с именем canvas2svg , но я очень плохо знаком с Python и не знаю, как установить модуль.Есть ли какой-то способ сохранить изображения черепахового холста?Если нет, то куда мне поместить пользовательские модули для python на машине с Ubuntu?

Ответы [ 2 ]

32 голосов
/ 18 мая 2011
from Tkinter import *
from turtle import *
import turtle


forward(100)
ts = turtle.getscreen()

ts.getcanvas().postscript(file="duck.eps")

Это поможет вам; У меня была та же проблема, я гуглил ее, но решил, прочитав исходный код модуля черепахи.

Объект canvas (tkinter) имеет функцию postscript; Вы можете использовать его.

Модуль черепахи имеет "экран", который дает вам "экран черепахи", который дает вам холст Tiknter, на котором рисует черепаха.

Это сохранит вас в инкапсулированном формате PostScript, поэтому вы наверняка сможете использовать его в GIMP, но есть и другие программы просмотра. Или вы можете Google, как сделать .gif из этого.

2 голосов
/ 11 августа 2017

Я написал класс SvgTurtle, который поддерживает стандартный интерфейс Turtle из Python, и записывает файл SVG, используя модуль svgwrite .Установите svgwrite, загрузите svg_turtle.py, а затем назовите его так:

from turtle import *  # @UnusedWildImport

import svgwrite

from svg_turtle import SvgTurtle


def draw_spiral():
    fillcolor('blue')
    begin_fill()
    for i in range(20):
        d = 50 + i*i*1.5
        pencolor(0, 0.05*i, 0)
        width(i)
        forward(d)
        right(144)
    end_fill()


def write_file(draw_func, filename, size):
    drawing = svgwrite.Drawing(filename, size=size)
    drawing.add(drawing.rect(fill='white', size=("100%", "100%")))
    t = SvgTurtle(drawing)
    Turtle._screen = t.screen
    Turtle._pen = t
    draw_func()
    drawing.save()


def main():
    write_file(draw_spiral, 'example.svg', size=("500px", "500px"))
    print('Done.')


if __name__ == '__main__':
    main()
...