2010-11-01 15 views
19

Mi piacerebbe capire come salvare un'immagine bitmap o grafica vettoriale dopo aver creato un disegno con il modulo tartaruga di Python. Dopo un po 'di googling non riesco a trovare una risposta facile. Ho trovato un modulo chiamato canvas2svg, ma sono molto nuovo in Python e non so come installare il modulo. Esiste un modo per salvare le immagini della tela delle tartarughe? Se no, dove metto i moduli personalizzati per python su una macchina Ubuntu?Modulo tartaruga Python - Salvataggio di un'immagine

+0

Nel caso in cui si desidera salvare in modo trasparente un'immagine al termine dell'esecuzione del programma (semi-utile per assistere con compiti per gli studenti di classificazione che terminano), per favore controlla: https://github.com/ucsb-cs/cTurtle_screenshot – bboe

risposta

24
from Tkinter import * 
from turtle import * 
import turtle 


forward(100) 
ts = turtle.getscreen() 

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

Questo ti aiuterà; Ho avuto lo stesso problema, l'ho cercato su Google, ma l'ho risolto leggendo la fonte del modulo tartaruga.

L'oggetto canvas (tkinter) ha la funzione postscript; Puoi usarlo.

Il modulo tartaruga ha "schermo" che ti dà lo "schermo tartaruga" che ti dà la tela di Tiknter in cui la tartaruga sta disegnando.

Questo ti salverà nel formato PostScript incapsulato, quindi puoi utilizzarlo in GIMP di sicuro ma ci sono anche altri utenti. Oppure, puoi Google come creare un file .gif da questo.

+2

In tartaruga di python 2.7, ha già la funzione postscript. Quindi, non è necessario importare Tkinter separatamente. –

+0

Vorrei solo aggiungere che il file EPS viene salvato nello stesso posto dello script. –

0

Ho scritto una classe SvgTurtle che supporta l'interfaccia standard di Turtle da Python e scrive un file SVG utilizzando il modulo svgwrite. Installare svgwrite, scaricare svg_turtle.py, e quindi chiamare in questo modo:

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() 
+0

Credo che dovresti avere 'draw_spiral()' -> 'draw_spiral()' In 'def write_file' –

+0

Suppongo tu intendessi' draw_spiral() '->' draw_func() ', @ Mr.Weathers. Hai ragione, questo è quello che intendevo fare, quindi l'ho risolto. –

Problemi correlati