429,302 Members | 3,621 Online
Need help? Post your question and get tips & solutions from a community of 429,302 IT Pros & Developers. It's quick & easy.

# Saving output of Turtle Graphics?

 P: n/a I accidentally stumbled across the Turtle Graphics module (turtle.py) the other day and have been having some fun with it. Now I'm wondering if there is a way to build into a script the saving of each window just before it is cleared. For example, here are a couple that I've saved by screen capture: They were produced by this script: ================================================== ======= # randomTriangles.py import turtle as T from random import * def twoRndN(low=0, high=1): """ generate two random floats x, y in the range [low, high) such that x <= y """ x, y = uniform(low, high), uniform(low, high) if x <= y: return x, y else: return y, x T.setup(width=1000, height=700, startx=0, starty=0) T.title("Random Triangles with random R,G,B") colorRange = "all" if colorRange == "random": lowR, highR = twoRndN() lowG, highG = twoRndN() lowB, highB = twoRndN() count = 0 for n in range(300): wdth = randrange(0,7,3) T.width(wdth) T.speed("fastest") if colorRange == "dark": R = uniform(.1, .5) G = uniform(.1, .5) B = uniform(.1, .5) elif colorRange == "pastel": R = uniform(.5, .9) G = uniform(.5, .9) B = uniform(.5, .9) elif colorRange == "all": R = uniform(0, 1) G = uniform(0, 1) B = uniform(0, 1) # set RGB for one color of your choice elif colorRange == "manual": R = .45 G = .2 B = .2 elif colorRange == "random": R = uniform(lowR, highR) G = uniform(lowG, highG) B = uniform(lowB, highB) T.color(R,G,B) T.begin_fill() # 2 connected lines will fill as a triangle for x in range(2): coord = (randint(-500,500), randint(-350,350)) T.goto(coord) T.end_fill() count += 1 if count 5: clr = randint(0,5) if clr == 0: T.clear() count = 0 T.done() ============================================== (The docs for Turtle graphics for Tk are at ) But how could I have saved them "automatically"? The script as shown will clear (T.clear() -- the 3rd line from the bottom) the window after producing 6 to maybe 15 superimposed triangles, so clearing will take place maybe 30 times. How can I save as images each of the 30 windows just before they are cleared? Thanks, Dick Moores Apr 7 '07 #1
7 Replies

 P: n/a Dick Moores wrote: I accidentally stumbled across the Turtle Graphics module (turtle.py) the other day and have been having some fun with it. Now I'm wondering if there is a way to build into a script the saving of each window just before it is cleared. For example, here are a couple that I've saved by screen capture: Turtle module uses Tk canvas element to draw graphics ('_canvas' attribute). I've written module, that exports canvas graphics to SVG file: http://wmula.republika.pl/proj/canvas2svg/ -- it may be useful for you. w. Apr 7 '07 #2

 P: n/a At 06:50 AM 4/7/2007, =?ISO-8859-2?Q?Wojciech_Mu=B3a?= wrote: >Dick Moores wrote: I accidentally stumbled across the Turtle Graphics module (turtle.py) the other day and have been having some fun with it. Now I'm wondering if there is a way to build into a script the saving of each window just before it is cleared. For example, here are a couple that I've saved by screen capture: Turtle module uses Tk canvas element to draw graphics ('_canvas'attribute). I've written module, that exports canvas graphics to SVGfile: http://wmula.republika.pl/proj/canvas2svg/ -- it may be usefulfor you. I afraid I'm totally unfamiliar with SVG. Would it be possible for you or someone else on the list to show how to use your module to export the simple product of this simple script to an SVG file? =============================================== import turtle as T from random import randint T.setup(width=1000, height=700, startx=0, starty=0) T.color(1, .5, .5) T.begin_fill() # 2 connected lines will fill as a triangle for x in range(2): coord = (randint(-500,500), randint(-350,350)) T.goto(coord) T.end_fill() T.done() ================================================ Thanks, Dick Moores Win XP Pro SP2 Python 2.5 Python IDE: Ulipad 3.6 Apr 7 '07 #3

 P: n/a Dick Moores wrote: >Turtle module uses Tk canvas element to draw graphics ('_canvas'attribute). I've written module, that exports canvas graphics to SVGfile: http://wmula.republika.pl/proj/canvas2svg/ -- it may be usefulfor you. I afraid I'm totally unfamiliar with SVG. Would it be possible for you or someone else on the list to show how to use your module to export the simple product of this simple script to an SVG file? =============================================== import turtle as T import canvasvg from random import randint T.setup(width=1000, height=700, startx=0, starty=0) T.color(1, .5, .5) T.begin_fill() # 2 connected lines will fill as a triangle for x in range(2): coord = (randint(-500,500), randint(-350,350)) T.goto(coord) T.end_fill() canvasvg.saveall("image.svg", T._canvas) T.done() ================================================ w. Apr 7 '07 #4

 P: n/a At 08:48 AM 4/7/2007, =?ISO-8859-2?Q?Wojciech_Mu=B3a?= wrote: >Dick Moores wrote: Turtle module uses Tk canvas element to draw graphics ('_canvas' attribute). I've written module, that exports canvas graphics to SVG file: http://wmula.republika.pl/proj/canvas2svg/ -- it may be useful for you. I afraid I'm totally unfamiliar with SVG. Would it be possible for you or someone else on the list to show how to use your module to export the simple product of this simple script to an SVG file? =============================================== import turtle as T import canvasvg from random import randint T.setup(width=1000, height=700, startx=0, starty=0) T.color(1, .5, .5) T.begin_fill() # 2 connected lines will fill as a triangle for x in range(2): coord = (randint(-500,500), randint(-350,350)) T.goto(coord) T.end_fill() canvasvg.saveall("image.svg", T._canvas) T.done() ================================================ OK, thanks, now I've got ================================================== ========= ================================================== ========== What do I do to see this? Dick Apr 7 '07 #5

 P: n/a Dick Moores wrote: What do I do to see this? For example Opera 9 and Firefox 1.5+ are able to view SVG files; there is a free plugin for IrfanView. w. Apr 7 '07 #6

 P: n/a Dick Moores wrote: OK, thanks, now I've got [an svg file] What do I do to see this? You can convert it to a jpeg using ImageMagick's convert. Peter Apr 7 '07 #7

 P: n/a At 09:31 AM 4/7/2007, =?ISO-8859-2?Q?Wojciech_Mu=B3a?= wrote: >Dick Moores wrote: What do I do to see this? For example Opera 9 and Firefox 1.5+ are able to view SVG files;there is a free plugin for IrfanView. Ha. I had tried it with Firefox 2 already, but I stupidly changed the extension to HTM first. I'll also get the IrfanView plugin. Thanks for all the help, and especially for your canvasvg.py module. Dick Apr 7 '07 #8

### This discussion thread is closed

Replies have been disabled for this discussion.