Chciałbym dowiedzieć się, jak zapisać bitmapę lub obraz grafiki wektorowej po utworzeniu rysunku z modułem żółwia Pythona. Po odrobinie googlowania nie mogę znaleźć łatwej odpowiedzi. Znalazłem moduł o nazwie canvas2svg, ale jestem bardzo nowy dla Pythona i nie wiem jak zainstalować moduł. Czy jest jakiś zbudowany w taki sposób, aby zapisać obrazy płótna żółwia? Jeśli nie, gdzie umieścić niestandardowe moduły dla Pythona na komputerze z Ubuntu?Moduł Żółwia Pythona - Zapisywanie obrazu
Odpowiedz
from Tkinter import *
from turtle import *
import turtle
forward(100)
ts = turtle.getscreen()
ts.getcanvas().postscript(file="duck.eps")
To ci pomoże; Miałem ten sam problem, przeglądałem go, ale rozwiązałem go, czytając źródło modułu żółwia.
Obiekt canvas (tkinter) ma funkcję postscript; możesz tego użyć.
Moduł żółwia ma "getcreen", który daje "ekran żółwia", który daje płótno Tiknter, w którym rysuje żółw.
To pozwoli Ci zaoszczędzić w postaci enkapsulowanego formatu PostScript, więc możesz go używać w GIMP-ie, ale są też inni widzowie. Lub możesz Google, jak zrobić .gif z tego.
W żółwi Pythona 2.7, ma już funkcję PostScript. Nie musisz importować Tkintera osobno. –
Chciałbym tylko dodać, że plik EPS zostanie zapisany w tym samym miejscu co skrypt. –
Napisałem klasę SvgTurtle
, która obsługuje standardowy interfejs Turtle z Python i zapisuje plik SVG przy użyciu modułu svgwrite. Zainstalować svgwrite, pobierz svg_turtle.py
, a następnie nazwać tak:
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()
Wierzę, że powinieneś mieć 'draw_spiral()' -> 'draw_spiral()' W 'def write_file' –
Zakładam, że chodziło o' draw_spiral() '->' draw_func() ', @ Mr.Weathers. Masz rację, właśnie to miałem zamiar zrobić, więc naprawiłem to. –
W przypadku chcesz przejrzyście zapisać obraz na koniec realizacji programu (pół-użyteczne do pomocy z zadaniami studenckich klasyfikacji, które kończą), proszę sprawdzić: https://github.com/ucsb-cs/cTurtle_screenshot – bboe