2010-11-01 16 views
19

Python'un kaplumbağa modülü ile çizim oluşturduktan sonra bir bitmap veya vektör grafik görüntüsünün nasıl kaydedileceğini öğrenmek istiyorum. Biraz uğraştıktan sonra kolay bir cevap bulamıyorum. canvas2svg adında bir modül buldum, ancak python için çok yeniyim ve modülü nasıl kuracağımı bilmiyorum. Kaplumbağa tuvalinin resimlerini kaydetmek için bazı yollar var mı? Eğer değilse, Ubuntu makinesinde python için özel modüller nereye koyabilirim?Python Turtle Module- Resim kaydetme

+0

şeffaf programın yürütme sonunda (sonlandırmak sınıflandırma öğrenci atamaları ile yardımcı olmak için yarı faydalıdır) bir görüntüyü kaydetmek istediğiniz durumunda, lütfen göz atın: https://github.com/ucsb-cs/cTurtle_screenshot – bboe

cevap

24
from Tkinter import * 
from turtle import * 
import turtle 


forward(100) 
ts = turtle.getscreen() 

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

Bu size yardımcı olacaktır; Aynı problemi yaşadım, Googled, ama kaplumbağa modülünün kaynağını okuyarak çözdüm.

Tuval (tkinter) nesnesinin postscript işlevi vardır; onu kullanabilirsin.

Kaplumbağa modülü, size kaplumbağanın çizim yaptığı Tiknter tuvalini veren "kaplumbağa ekranı" nı veren "kepekli" ekrana sahiptir.

Bu, sizi kapsüllenmiş PostScript biçiminde kaydeder, böylece GIMP'de de kullanabilirsiniz, ancak başka görüntüleyenler de vardır. Veya Google'ın bundan nasıl bir .gif yapmasını sağlayabilirsiniz.

+2

python 2.7 kaplumbağasında, zaten postscript işlevi var. Yani, Tkinter'i ayrı olarak almanıza gerek yoktur. –

+0

Sadece EPS dosyasının betikle aynı yere kaydedildiğini eklemek istiyorum. –

0

Python'dan standart Kaplumbağa arabirimini destekleyen bir SvgTurtle sınıfı yazdım ve svgwrite modülünü kullanarak bir SVG dosyası yazıyor. Böyle diyoruz, sonra svgwrite takın svg_turtle.py indirebilir ve:

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

"Draw_spiral()" -> 'draw_spiral()' '' write_dosyası '' olmalıdır 'ini yazmanız gerekir –

+0

' draw_spiral() '->' draw_func() ', @ Mr.Weathers. Haklısın, yapmak istediğim buydu, ben de düzeltdim. –