blob: 5f9bf184958bfa6117c4661eec00e5095718ad44 [file] [log] [blame]
Martin v. Löwis87184592008-06-04 06:29:55 +00001========================================
Georg Brandl6634bf22008-05-20 07:13:37 +00002:mod:`turtle` --- Turtle graphics for Tk
3========================================
Georg Brandl8ec7f652007-08-15 14:28:01 +00004
Martin v. Löwis060cd1e2008-07-13 20:31:49 +00005.. module:: turtle
6 :synopsis: Turtle graphics for Tk
7.. sectionauthor:: Gregor Lingl <gregor.lingl@aon.at>
8
Martin v. Löwis87184592008-06-04 06:29:55 +00009Introduction
Georg Brandla2b34b82008-06-04 11:17:26 +000010============
Martin v. Löwis87184592008-06-04 06:29:55 +000011
Georg Brandla2b34b82008-06-04 11:17:26 +000012Turtle graphics is a popular way for introducing programming to kids. It was
13part of the original Logo programming language developed by Wally Feurzig and
14Seymour Papert in 1966.
Martin v. Löwis87184592008-06-04 06:29:55 +000015
Georg Brandla2b34b82008-06-04 11:17:26 +000016Imagine a robotic turtle starting at (0, 0) in the x-y plane. Give it the
17command ``turtle.forward(15)``, and it moves (on-screen!) 15 pixels in the
18direction it is facing, drawing a line as it moves. Give it the command
19``turtle.left(25)``, and it rotates in-place 25 degrees clockwise.
Martin v. Löwis87184592008-06-04 06:29:55 +000020
Georg Brandla2b34b82008-06-04 11:17:26 +000021By combining together these and similar commands, intricate shapes and pictures
22can easily be drawn.
Martin v. Löwis87184592008-06-04 06:29:55 +000023
Georg Brandla2b34b82008-06-04 11:17:26 +000024The :mod:`turtle` module is an extended reimplementation of the same-named
25module from the Python standard distribution up to version Python 2.5.
Martin v. Löwis87184592008-06-04 06:29:55 +000026
Georg Brandla2b34b82008-06-04 11:17:26 +000027It tries to keep the merits of the old turtle module and to be (nearly) 100%
28compatible with it. This means in the first place to enable the learning
29programmer to use all the commands, classes and methods interactively when using
30the module from within IDLE run with the ``-n`` switch.
Martin v. Löwis87184592008-06-04 06:29:55 +000031
Georg Brandla2b34b82008-06-04 11:17:26 +000032The turtle module provides turtle graphics primitives, in both object-oriented
33and procedure-oriented ways. Because it uses :mod:`Tkinter` for the underlying
34graphics, it needs a version of python installed with Tk support.
Martin v. Löwis87184592008-06-04 06:29:55 +000035
Georg Brandla2b34b82008-06-04 11:17:26 +000036The object-oriented interface uses essentially two+two classes:
Martin v. Löwis87184592008-06-04 06:29:55 +000037
Georg Brandla2b34b82008-06-04 11:17:26 +0000381. The :class:`TurtleScreen` class defines graphics windows as a playground for
39 the drawing turtles. Its constructor needs a :class:`Tkinter.Canvas` or a
40 :class:`ScrolledCanvas` as argument. It should be used when :mod:`turtle` is
41 used as part of some application.
Martin v. Löwis87184592008-06-04 06:29:55 +000042
Martin v. Löwise563aa42008-09-29 22:09:07 +000043 The function :func:`Screen` returns a singleton object of a
44 :class:`TurtleScreen` subclass. This function should be used when
45 :mod:`turtle` is used as a standalone tool for doing graphics.
46 As a singleton object, inheriting from its class is not possible.
Martin v. Löwis87184592008-06-04 06:29:55 +000047
Georg Brandla2b34b82008-06-04 11:17:26 +000048 All methods of TurtleScreen/Screen also exist as functions, i.e. as part of
49 the procedure-oriented interface.
Martin v. Löwis87184592008-06-04 06:29:55 +000050
Georg Brandla2b34b82008-06-04 11:17:26 +0000512. :class:`RawTurtle` (alias: :class:`RawPen`) defines Turtle objects which draw
52 on a :class:`TurtleScreen`. Its constructor needs a Canvas, ScrolledCanvas
53 or TurtleScreen as argument, so the RawTurtle objects know where to draw.
Martin v. Löwis87184592008-06-04 06:29:55 +000054
Georg Brandla2b34b82008-06-04 11:17:26 +000055 Derived from RawTurtle is the subclass :class:`Turtle` (alias: :class:`Pen`),
56 which draws on "the" :class:`Screen` - instance which is automatically
57 created, if not already present.
Martin v. Löwis87184592008-06-04 06:29:55 +000058
Georg Brandla2b34b82008-06-04 11:17:26 +000059 All methods of RawTurtle/Turtle also exist as functions, i.e. part of the
60 procedure-oriented interface.
Martin v. Löwis87184592008-06-04 06:29:55 +000061
Georg Brandla2b34b82008-06-04 11:17:26 +000062The procedural interface provides functions which are derived from the methods
63of the classes :class:`Screen` and :class:`Turtle`. They have the same names as
64the corresponding methods. A screen object is automativally created whenever a
65function derived from a Screen method is called. An (unnamed) turtle object is
66automatically created whenever any of the functions derived from a Turtle method
67is called.
Martin v. Löwis87184592008-06-04 06:29:55 +000068
Georg Brandla2b34b82008-06-04 11:17:26 +000069To use multiple turtles an a screen one has to use the object-oriented interface.
Martin v. Löwis87184592008-06-04 06:29:55 +000070
Georg Brandla2b34b82008-06-04 11:17:26 +000071.. note::
72 In the following documentation the argument list for functions is given.
73 Methods, of course, have the additional first argument *self* which is
74 omitted here.
Martin v. Löwis87184592008-06-04 06:29:55 +000075
Martin v. Löwis87184592008-06-04 06:29:55 +000076
Georg Brandla2b34b82008-06-04 11:17:26 +000077Overview over available Turtle and Screen methods
78=================================================
Martin v. Löwis87184592008-06-04 06:29:55 +000079
Georg Brandla2b34b82008-06-04 11:17:26 +000080Turtle methods
Martin v. Löwis87184592008-06-04 06:29:55 +000081--------------
Georg Brandl8ec7f652007-08-15 14:28:01 +000082
Georg Brandla2b34b82008-06-04 11:17:26 +000083Turtle motion
84 Move and draw
85 | :func:`forward` | :func:`fd`
86 | :func:`backward` | :func:`bk` | :func:`back`
87 | :func:`right` | :func:`rt`
88 | :func:`left` | :func:`lt`
89 | :func:`goto` | :func:`setpos` | :func:`setposition`
90 | :func:`setx`
91 | :func:`sety`
92 | :func:`setheading` | :func:`seth`
93 | :func:`home`
94 | :func:`circle`
95 | :func:`dot`
96 | :func:`stamp`
97 | :func:`clearstamp`
98 | :func:`clearstamps`
99 | :func:`undo`
100 | :func:`speed`
Georg Brandl8ec7f652007-08-15 14:28:01 +0000101
Georg Brandla2b34b82008-06-04 11:17:26 +0000102 Tell Turtle's state
103 | :func:`position` | :func:`pos`
104 | :func:`towards`
105 | :func:`xcor`
106 | :func:`ycor`
107 | :func:`heading`
108 | :func:`distance`
Georg Brandl8ec7f652007-08-15 14:28:01 +0000109
Georg Brandla2b34b82008-06-04 11:17:26 +0000110 Setting and measurement
111 | :func:`degrees`
112 | :func:`radians`
113
114Pen control
115 Drawing state
116 | :func:`pendown` | :func:`pd` | :func:`down`
117 | :func:`penup` | :func:`pu` | :func:`up`
118 | :func:`pensize` | :func:`width`
119 | :func:`pen`
120 | :func:`isdown`
121
122 Color control
123 | :func:`color`
124 | :func:`pencolor`
125 | :func:`fillcolor`
126
127 Filling
128 | :func:`fill`
129 | :func:`begin_fill`
130 | :func:`end_fill`
131
132 More drawing control
133 | :func:`reset`
134 | :func:`clear`
135 | :func:`write`
136
137Turtle state
138 Visibility
139 | :func:`showturtle` | :func:`st`
140 | :func:`hideturtle` | :func:`ht`
141 | :func:`isvisible`
142
143 Appearance
144 | :func:`shape`
145 | :func:`resizemode`
146 | :func:`shapesize` | :func:`turtlesize`
147 | :func:`settiltangle`
148 | :func:`tiltangle`
149 | :func:`tilt`
150
151Using events
152 | :func:`onclick`
153 | :func:`onrelease`
154 | :func:`ondrag`
155
156Special Turtle methods
157 | :func:`begin_poly`
158 | :func:`end_poly`
159 | :func:`get_poly`
160 | :func:`clone`
161 | :func:`getturtle` | :func:`getpen`
162 | :func:`getscreen`
163 | :func:`setundobuffer`
164 | :func:`undobufferentries`
165 | :func:`tracer`
166 | :func:`window_width`
167 | :func:`window_height`
Georg Brandl8ec7f652007-08-15 14:28:01 +0000168
Georg Brandl8ec7f652007-08-15 14:28:01 +0000169
Georg Brandla2b34b82008-06-04 11:17:26 +0000170Methods of TurtleScreen/Screen
171------------------------------
172
173Window control
174 | :func:`bgcolor`
175 | :func:`bgpic`
176 | :func:`clear` | :func:`clearscreen`
177 | :func:`reset` | :func:`resetscreen`
178 | :func:`screensize`
179 | :func:`setworldcoordinates`
180
181Animation control
182 | :func:`delay`
183 | :func:`tracer`
184 | :func:`update`
185
186Using screen events
187 | :func:`listen`
188 | :func:`onkey`
189 | :func:`onclick` | :func:`onscreenclick`
190 | :func:`ontimer`
191
192Settings and special methods
193 | :func:`mode`
194 | :func:`colormode`
195 | :func:`getcanvas`
196 | :func:`getshapes`
197 | :func:`register_shape` | :func:`addshape`
198 | :func:`turtles`
199 | :func:`window_height`
200 | :func:`window_width`
201
202Methods specific to Screen
203 | :func:`bye`
204 | :func:`exitonclick`
205 | :func:`setup`
206 | :func:`title`
Georg Brandl8ec7f652007-08-15 14:28:01 +0000207
Georg Brandl8ec7f652007-08-15 14:28:01 +0000208
Georg Brandla2b34b82008-06-04 11:17:26 +0000209Methods of RawTurtle/Turtle and corresponding functions
210=======================================================
Georg Brandl8ec7f652007-08-15 14:28:01 +0000211
Georg Brandla2b34b82008-06-04 11:17:26 +0000212Most of the examples in this section refer to a Turtle instance called
213``turtle``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000214
Georg Brandla2b34b82008-06-04 11:17:26 +0000215Turtle motion
216-------------
217
218.. function:: forward(distance)
219 fd(distance)
220
221 :param distance: a number (integer or float)
222
223 Move the turtle forward by the specified *distance*, in the direction the
224 turtle is headed.
225
226 >>> turtle.position()
227 (0.00, 0.00)
228 >>> turtle.forward(25)
229 >>> turtle.position()
230 (25.00,0.00)
231 >>> turtle.forward(-75)
232 >>> turtle.position()
233 (-50.00,0.00)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000234
235
Georg Brandla2b34b82008-06-04 11:17:26 +0000236.. function:: back(distance)
237 bk(distance)
238 backward(distance)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000239
Georg Brandla2b34b82008-06-04 11:17:26 +0000240 :param distance: a number
Georg Brandl8ec7f652007-08-15 14:28:01 +0000241
Georg Brandla2b34b82008-06-04 11:17:26 +0000242 Move the turtle backward by *distance*, opposite to the direction the
243 turtle is headed. Do not change the turtle's heading.
244
245 >>> turtle.position()
246 (0.00, 0.00)
247 >>> turtle.backward(30)
248 >>> turtle.position()
249 (-30.00, 0.00)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000250
Georg Brandl8ec7f652007-08-15 14:28:01 +0000251
Georg Brandla2b34b82008-06-04 11:17:26 +0000252.. function:: right(angle)
253 rt(angle)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000254
Georg Brandla2b34b82008-06-04 11:17:26 +0000255 :param angle: a number (integer or float)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000256
Georg Brandla2b34b82008-06-04 11:17:26 +0000257 Turn turtle right by *angle* units. (Units are by default degrees, but
258 can be set via the :func:`degrees` and :func:`radians` functions.) Angle
259 orientation depends on the turtle mode, see :func:`mode`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000260
Georg Brandla2b34b82008-06-04 11:17:26 +0000261 >>> turtle.heading()
262 22.0
263 >>> turtle.right(45)
264 >>> turtle.heading()
265 337.0
Georg Brandl8ec7f652007-08-15 14:28:01 +0000266
Georg Brandl8ec7f652007-08-15 14:28:01 +0000267
Georg Brandla2b34b82008-06-04 11:17:26 +0000268.. function:: left(angle)
269 lt(angle)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000270
Georg Brandla2b34b82008-06-04 11:17:26 +0000271 :param angle: a number (integer or float)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000272
Georg Brandla2b34b82008-06-04 11:17:26 +0000273 Turn turtle left by *angle* units. (Units are by default degrees, but
274 can be set via the :func:`degrees` and :func:`radians` functions.) Angle
275 orientation depends on the turtle mode, see :func:`mode`.
276
277 >>> turtle.heading()
278 22.0
279 >>> turtle.left(45)
280 >>> turtle.heading()
281 67.0
282
283.. function:: goto(x, y=None)
284 setpos(x, y=None)
285 setposition(x, y=None)
286
287 :param x: a number or a pair/vector of numbers
288 :param y: a number or ``None``
289
290 If *y* is ``None``, *x* must be a pair of coordinates or a :class:`Vec2D`
291 (e.g. as returned by :func:`pos`).
292
293 Move turtle to an absolute position. If the pen is down, draw line. Do
294 not change the turtle's orientation.
295
296 >>> tp = turtle.pos()
297 >>> tp
298 (0.00, 0.00)
299 >>> turtle.setpos(60,30)
300 >>> turtle.pos()
301 (60.00,30.00)
302 >>> turtle.setpos((20,80))
303 >>> turtle.pos()
304 (20.00,80.00)
305 >>> turtle.setpos(tp)
306 >>> turtle.pos()
307 (0.00,0.00)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000308
Georg Brandl8ec7f652007-08-15 14:28:01 +0000309
Georg Brandla2b34b82008-06-04 11:17:26 +0000310.. function:: setx(x)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000311
Georg Brandla2b34b82008-06-04 11:17:26 +0000312 :param x: a number (integer or float)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000313
Georg Brandla2b34b82008-06-04 11:17:26 +0000314 Set the turtle's first coordinate to *x*, leave second coordinate
315 unchanged.
316
317 >>> turtle.position()
318 (0.00, 240.00)
319 >>> turtle.setx(10)
320 >>> turtle.position()
321 (10.00, 240.00)
322
323
324.. function:: sety(y)
325
326 :param y: a number (integer or float)
327
328 Set the turtle's first coordinate to *y*, leave second coordinate
329 unchanged.
330
331 >>> turtle.position()
332 (0.00, 40.00)
333 >>> turtle.sety(-10)
334 >>> turtle.position()
335 (0.00, -10.00)
336
337
338.. function:: setheading(to_angle)
339 seth(to_angle)
340
341 :param to_angle: a number (integer or float)
342
343 Set the orientation of the turtle to *to_angle*. Here are some common
344 directions in degrees:
345
346 =================== ====================
347 standard mode logo mode
348 =================== ====================
349 0 - east 0 - north
350 90 - north 90 - east
351 180 - west 180 - south
352 270 - south 270 - west
353 =================== ====================
354
355 >>> turtle.setheading(90)
356 >>> turtle.heading()
357 90
358
359
360.. function:: home()
361
362 Move turtle to the origin -- coordinates (0,0) -- and set its heading to
363 its start-orientation (which depends on the mode, see :func:`mode`).
364
365
366.. function:: circle(radius, extent=None, steps=None)
367
368 :param radius: a number
369 :param extent: a number (or ``None``)
370 :param steps: an integer (or ``None``)
371
372 Draw a circle with given *radius*. The center is *radius* units left of
373 the turtle; *extent* -- an angle -- determines which part of the circle
374 is drawn. If *extent* is not given, draw the entire circle. If *extent*
375 is not a full circle, one endpoint of the arc is the current pen
376 position. Draw the arc in counterclockwise direction if *radius* is
377 positive, otherwise in clockwise direction. Finally the direction of the
378 turtle is changed by the amount of *extent*.
379
380 As the circle is approximated by an inscribed regular polygon, *steps*
381 determines the number of steps to use. If not given, it will be
382 calculated automatically. May be used to draw regular polygons.
383
384 >>> turtle.circle(50)
385 >>> turtle.circle(120, 180) # draw a semicircle
386
387
388.. function:: dot(size=None, *color)
389
390 :param size: an integer >= 1 (if given)
391 :param color: a colorstring or a numeric color tuple
392
393 Draw a circular dot with diameter *size*, using *color*. If *size* is
394 not given, the maximum of pensize+4 and 2*pensize is used.
395
396 >>> turtle.dot()
397 >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50)
398
399
400.. function:: stamp()
401
402 Stamp a copy of the turtle shape onto the canvas at the current turtle
403 position. Return a stamp_id for that stamp, which can be used to delete
404 it by calling ``clearstamp(stamp_id)``.
405
406 >>> turtle.color("blue")
407 >>> turtle.stamp()
408 13
409 >>> turtle.fd(50)
410
411
412.. function:: clearstamp(stampid)
413
414 :param stampid: an integer, must be return value of previous
415 :func:`stamp` call
416
417 Delete stamp with given *stampid*.
418
419 >>> turtle.color("blue")
420 >>> astamp = turtle.stamp()
421 >>> turtle.fd(50)
422 >>> turtle.clearstamp(astamp)
423
424
425.. function:: clearstamps(n=None)
426
427 :param n: an integer (or ``None``)
428
429 Delete all or first/last *n* of turtle's stamps. If *n* is None, delete
430 all stamps, if *n* > 0 delete first *n* stamps, else if *n* < 0 delete
431 last *n* stamps.
432
433 >>> for i in range(8):
434 ... turtle.stamp(); turtle.fd(30)
435 >>> turtle.clearstamps(2)
436 >>> turtle.clearstamps(-2)
437 >>> turtle.clearstamps()
438
439
440.. function:: undo()
441
442 Undo (repeatedly) the last turtle action(s). Number of available
443 undo actions is determined by the size of the undobuffer.
444
445 >>> for i in range(4):
446 ... turtle.fd(50); turtle.lt(80)
447 ...
448 >>> for i in range(8):
449 ... turtle.undo()
450
451
452.. function:: speed(speed=None)
453
454 :param speed: an integer in the range 0..10 or a speedstring (see below)
455
456 Set the turtle's speed to an integer value in the range 0..10. If no
457 argument is given, return current speed.
458
459 If input is a number greater than 10 or smaller than 0.5, speed is set
460 to 0. Speedstrings are mapped to speedvalues as follows:
461
462 * "fastest": 0
463 * "fast": 10
464 * "normal": 6
465 * "slow": 3
466 * "slowest": 1
467
468 Speeds from 1 to 10 enforce increasingly faster animation of line drawing
469 and turtle turning.
470
471 Attention: *speed* = 0 means that *no* animation takes
472 place. forward/back makes turtle jump and likewise left/right make the
473 turtle turn instantly.
474
475 >>> turtle.speed(3)
476
477
478Tell Turtle's state
Martin v. Löwis87184592008-06-04 06:29:55 +0000479-------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000480
Georg Brandla2b34b82008-06-04 11:17:26 +0000481.. function:: position()
482 pos()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000483
Georg Brandla2b34b82008-06-04 11:17:26 +0000484 Return the turtle's current location (x,y) (as a :class:`Vec2D` vector).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000485
Georg Brandla2b34b82008-06-04 11:17:26 +0000486 >>> turtle.pos()
487 (0.00, 240.00)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000488
Georg Brandl8ec7f652007-08-15 14:28:01 +0000489
Georg Brandla2b34b82008-06-04 11:17:26 +0000490.. function:: towards(x, y=None)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000491
Georg Brandla2b34b82008-06-04 11:17:26 +0000492 :param x: a number or a pair/vector of numbers or a turtle instance
493 :param y: a number if *x* is a number, else ``None``
Georg Brandl8ec7f652007-08-15 14:28:01 +0000494
Georg Brandla2b34b82008-06-04 11:17:26 +0000495 Return the angle between the line from turtle position to position specified
496 by (x,y), the vector or the other turtle. This depends on the turtle's start
497 orientation which depends on the mode - "standard"/"world" or "logo").
Georg Brandl8ec7f652007-08-15 14:28:01 +0000498
Georg Brandla2b34b82008-06-04 11:17:26 +0000499 >>> turtle.pos()
500 (10.00, 10.00)
501 >>> turtle.towards(0,0)
502 225.0
Georg Brandl8ec7f652007-08-15 14:28:01 +0000503
504
Georg Brandla2b34b82008-06-04 11:17:26 +0000505.. function:: xcor()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000506
Georg Brandla2b34b82008-06-04 11:17:26 +0000507 Return the turtle's x coordinate.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000508
Georg Brandla2b34b82008-06-04 11:17:26 +0000509 >>> reset()
510 >>> turtle.left(60)
511 >>> turtle.forward(100)
512 >>> print turtle.xcor()
513 50.0
Georg Brandl8ec7f652007-08-15 14:28:01 +0000514
Georg Brandl8ec7f652007-08-15 14:28:01 +0000515
Georg Brandla2b34b82008-06-04 11:17:26 +0000516.. function:: ycor()
517
518 Return the turtle's y coordinate.
519
520 >>> reset()
521 >>> turtle.left(60)
522 >>> turtle.forward(100)
523 >>> print turtle.ycor()
524 86.6025403784
Georg Brandl8ec7f652007-08-15 14:28:01 +0000525
Georg Brandl8ec7f652007-08-15 14:28:01 +0000526
Georg Brandla2b34b82008-06-04 11:17:26 +0000527.. function:: heading()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000528
Georg Brandla2b34b82008-06-04 11:17:26 +0000529 Return the turtle's current heading (value depends on the turtle mode, see
530 :func:`mode`).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000531
Georg Brandla2b34b82008-06-04 11:17:26 +0000532 >>> turtle.left(67)
533 >>> turtle.heading()
534 67.0
Georg Brandl8ec7f652007-08-15 14:28:01 +0000535
536
Georg Brandla2b34b82008-06-04 11:17:26 +0000537.. function:: distance(x, y=None)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000538
Georg Brandla2b34b82008-06-04 11:17:26 +0000539 :param x: a number or a pair/vector of numbers or a turtle instance
540 :param y: a number if *x* is a number, else ``None``
Georg Brandl8ec7f652007-08-15 14:28:01 +0000541
Georg Brandla2b34b82008-06-04 11:17:26 +0000542 Return the distance from the turtle to (x,y), the given vector, or the given
543 other turtle, in turtle step units.
544
545 >>> turtle.pos()
546 (0.00, 0.00)
547 >>> turtle.distance(30,40)
548 50.0
549 >>> joe = Turtle()
550 >>> joe.forward(77)
551 >>> turtle.distance(joe)
552 77.0
Georg Brandl8ec7f652007-08-15 14:28:01 +0000553
Georg Brandl8ec7f652007-08-15 14:28:01 +0000554
Georg Brandla2b34b82008-06-04 11:17:26 +0000555Settings for measurement
556------------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000557
Georg Brandla2b34b82008-06-04 11:17:26 +0000558.. function:: degrees(fullcircle=360.0)
559
560 :param fullcircle: a number
561
562 Set angle measurement units, i.e. set number of "degrees" for a full circle.
563 Default value is 360 degrees.
564
565 >>> turtle.left(90)
566 >>> turtle.heading()
567 90
568 >>> turtle.degrees(400.0) # angle measurement in gon
569 >>> turtle.heading()
570 100
Georg Brandl8ec7f652007-08-15 14:28:01 +0000571
Georg Brandl8ec7f652007-08-15 14:28:01 +0000572
Georg Brandla2b34b82008-06-04 11:17:26 +0000573.. function:: radians()
574
575 Set the angle measurement units to radians. Equivalent to
576 ``degrees(2*math.pi)``.
577
578 >>> turtle.heading()
579 90
580 >>> turtle.radians()
581 >>> turtle.heading()
582 1.5707963267948966
Georg Brandl8ec7f652007-08-15 14:28:01 +0000583
584
Georg Brandla2b34b82008-06-04 11:17:26 +0000585Pen control
586-----------
Georg Brandl8ec7f652007-08-15 14:28:01 +0000587
Georg Brandla2b34b82008-06-04 11:17:26 +0000588Drawing state
589~~~~~~~~~~~~~
590
591.. function:: pendown()
592 pd()
593 down()
594
595 Pull the pen down -- drawing when moving.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000596
597
Georg Brandla2b34b82008-06-04 11:17:26 +0000598.. function:: penup()
599 pu()
600 up()
Georg Brandl8ec7f652007-08-15 14:28:01 +0000601
Georg Brandla2b34b82008-06-04 11:17:26 +0000602 Pull the pen up -- no drawing when moving.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000603
Georg Brandl8ec7f652007-08-15 14:28:01 +0000604
Georg Brandla2b34b82008-06-04 11:17:26 +0000605.. function:: pensize(width=None)
606 width(width=None)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000607
Georg Brandla2b34b82008-06-04 11:17:26 +0000608 :param width: a positive number
609
610 Set the line thickness to *width* or return it. If resizemode is set to
611 "auto" and turtleshape is a polygon, that polygon is drawn with the same line
612 thickness. If no argument is given, the current pensize is returned.
613
614 >>> turtle.pensize()
615 1
616 >>> turtle.pensize(10) # from here on lines of width 10 are drawn
Georg Brandl8ec7f652007-08-15 14:28:01 +0000617
Georg Brandl8ec7f652007-08-15 14:28:01 +0000618
Georg Brandla2b34b82008-06-04 11:17:26 +0000619.. function:: pen(pen=None, **pendict)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000620
Georg Brandla2b34b82008-06-04 11:17:26 +0000621 :param pen: a dictionary with some or all of the below listed keys
622 :param pendict: one or more keyword-arguments with the below listed keys as keywords
Georg Brandl8ec7f652007-08-15 14:28:01 +0000623
Georg Brandla2b34b82008-06-04 11:17:26 +0000624 Return or set the pen's attributes in a "pen-dictionary" with the following
625 key/value pairs:
626
627 * "shown": True/False
628 * "pendown": True/False
629 * "pencolor": color-string or color-tuple
630 * "fillcolor": color-string or color-tuple
631 * "pensize": positive number
632 * "speed": number in range 0..10
633 * "resizemode": "auto" or "user" or "noresize"
634 * "stretchfactor": (positive number, positive number)
635 * "outline": positive number
636 * "tilt": number
637
638 This dicionary can be used as argument for a subsequent call to :func:`pen`
639 to restore the former pen-state. Moreover one or more of these attributes
640 can be provided as keyword-arguments. This can be used to set several pen
641 attributes in one statement.
642
643 >>> turtle.pen(fillcolor="black", pencolor="red", pensize=10)
644 >>> turtle.pen()
645 {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1,
646 'pencolor': 'red', 'pendown': True, 'fillcolor': 'black',
647 'stretchfactor': (1,1), 'speed': 3}
648 >>> penstate=turtle.pen()
649 >>> turtle.color("yellow","")
650 >>> turtle.penup()
651 >>> turtle.pen()
652 {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1,
653 'pencolor': 'yellow', 'pendown': False, 'fillcolor': '',
654 'stretchfactor': (1,1), 'speed': 3}
655 >>> p.pen(penstate, fillcolor="green")
656 >>> p.pen()
657 {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1,
658 'pencolor': 'red', 'pendown': True, 'fillcolor': 'green',
659 'stretchfactor': (1,1), 'speed': 3}
660
661
662.. function:: isdown()
663
664 Return ``True`` if pen is down, ``False`` if it's up.
665
666 >>> turtle.penup()
667 >>> turtle.isdown()
668 False
669 >>> turtle.pendown()
670 >>> turtle.isdown()
671 True
672
673
674Color control
675~~~~~~~~~~~~~
676
677.. function:: pencolor(*args)
678
679 Return or set the pencolor.
680
681 Four input formats are allowed:
682
683 ``pencolor()``
684 Return the current pencolor as color specification string, possibly in
685 hex-number format (see example). May be used as input to another
686 color/pencolor/fillcolor call.
687
688 ``pencolor(colorstring)``
689 Set pencolor to *colorstring*, which is a Tk color specification string,
690 such as ``"red"``, ``"yellow"``, or ``"#33cc8c"``.
691
692 ``pencolor((r, g, b))``
693 Set pencolor to the RGB color represented by the tuple of *r*, *g*, and
694 *b*. Each of *r*, *g*, and *b* must be in the range 0..colormode, where
695 colormode is either 1.0 or 255 (see :func:`colormode`).
696
697 ``pencolor(r, g, b)``
698 Set pencolor to the RGB color represented by *r*, *g*, and *b*. Each of
699 *r*, *g*, and *b* must be in the range 0..colormode.
700
701 If turtleshape is a polygon, the outline of that polygon is drawn with the
702 newly set pencolor.
703
704 >>> turtle.pencolor("brown")
705 >>> tup = (0.2, 0.8, 0.55)
706 >>> turtle.pencolor(tup)
707 >>> turtle.pencolor()
708 "#33cc8c"
709
710
711.. function:: fillcolor(*args)
712
713 Return or set the fillcolor.
714
715 Four input formats are allowed:
716
717 ``fillcolor()``
718 Return the current fillcolor as color specification string, possibly in
719 hex-number format (see example). May be used as input to another
720 color/pencolor/fillcolor call.
721
722 ``fillcolor(colorstring)``
723 Set fillcolor to *colorstring*, which is a Tk color specification string,
724 such as ``"red"``, ``"yellow"``, or ``"#33cc8c"``.
725
726 ``fillcolor((r, g, b))``
727 Set fillcolor to the RGB color represented by the tuple of *r*, *g*, and
728 *b*. Each of *r*, *g*, and *b* must be in the range 0..colormode, where
729 colormode is either 1.0 or 255 (see :func:`colormode`).
730
731 ``fillcolor(r, g, b)``
732 Set fillcolor to the RGB color represented by *r*, *g*, and *b*. Each of
733 *r*, *g*, and *b* must be in the range 0..colormode.
734
735 If turtleshape is a polygon, the interior of that polygon is drawn
736 with the newly set fillcolor.
737
738 >>> turtle.fillcolor("violet")
739 >>> col = turtle.pencolor()
740 >>> turtle.fillcolor(col)
741 >>> turtle.fillcolor(0, .5, 0)
742
743
744.. function:: color(*args)
745
746 Return or set pencolor and fillcolor.
747
748 Several input formats are allowed. They use 0 to 3 arguments as
749 follows:
750
751 ``color()``
752 Return the current pencolor and the current fillcolor as a pair of color
753 specification strings as returned by :func:`pencolor` and
754 :func:`fillcolor`.
755
756 ``color(colorstring)``, ``color((r,g,b))``, ``color(r,g,b)``
757 Inputs as in :func:`pencolor`, set both, fillcolor and pencolor, to the
758 given value.
759
760 ``color(colorstring1, colorstring2)``, ``color((r1,g1,b1), (r2,g2,b2))``
761 Equivalent to ``pencolor(colorstring1)`` and ``fillcolor(colorstring2)``
762 and analogously if the other input format is used.
763
764 If turtleshape is a polygon, outline and interior of that polygon is drawn
765 with the newly set colors.
766
767 >>> turtle.color("red", "green")
768 >>> turtle.color()
769 ("red", "green")
770 >>> colormode(255)
771 >>> color((40, 80, 120), (160, 200, 240))
772 >>> color()
773 ("#285078", "#a0c8f0")
774
775
776See also: Screen method :func:`colormode`.
777
778
779Filling
780~~~~~~~
781
782.. function:: fill(flag)
783
784 :param flag: True/False (or 1/0 respectively)
785
786 Call ``fill(True)`` before drawing the shape you want to fill, and
787 ``fill(False)`` when done. When used without argument: return fillstate
788 (``True`` if filling, ``False`` else).
789
790 >>> turtle.fill(True)
791 >>> for _ in range(3):
792 ... turtle.forward(100)
793 ... turtle.left(120)
794 ...
795 >>> turtle.fill(False)
796
797
798.. function:: begin_fill()
799
800 Call just before drawing a shape to be filled. Equivalent to ``fill(True)``.
801
802 >>> turtle.color("black", "red")
803 >>> turtle.begin_fill()
804 >>> turtle.circle(60)
805 >>> turtle.end_fill()
806
807
808.. function:: end_fill()
809
810 Fill the shape drawn after the last call to :func:`begin_fill`. Equivalent
811 to ``fill(False)``.
812
813
814More drawing control
815~~~~~~~~~~~~~~~~~~~~
816
817.. function:: reset()
818
819 Delete the turtle's drawings from the screen, re-center the turtle and set
820 variables to the default values.
821
822 >>> turtle.position()
823 (0.00,-22.00)
824 >>> turtle.heading()
825 100.0
826 >>> turtle.reset()
827 >>> turtle.position()
828 (0.00,0.00)
829 >>> turtle.heading()
830 0.0
831
832
833.. function:: clear()
834
835 Delete the turtle's drawings from the screen. Do not move turtle. State and
836 position of the turtle as well as drawings of other turtles are not affected.
837
838
839.. function:: write(arg, move=False, align="left", font=("Arial", 8, "normal"))
840
841 :param arg: object to be written to the TurtleScreen
842 :param move: True/False
843 :param align: one of the strings "left", "center" or right"
844 :param font: a triple (fontname, fontsize, fonttype)
845
846 Write text - the string representation of *arg* - at the current turtle
847 position according to *align* ("left", "center" or right") and with the given
848 font. If *move* is True, the pen is moved to the bottom-right corner of the
849 text. By default, *move* is False.
850
851 >>> turtle.write("Home = ", True, align="center")
852 >>> turtle.write((0,0), True)
853
854
855Turtle state
856------------
857
858Visibility
859~~~~~~~~~~
860
861.. function:: showturtle()
862 st()
863
864 Make the turtle visible.
865
866 >>> turtle.hideturtle()
867 >>> turtle.showturtle()
868
869
870.. function:: hideturtle()
871 ht()
872
873 Make the turtle invisible. It's a good idea to do this while you're in the
874 middle of doing some complex drawing, because hiding the turtle speeds up the
875 drawing observably.
876
877 >>> turtle.hideturtle()
878
879
880.. function:: isvisible()
881
882 Return True if the Turtle is shown, False if it's hidden.
883
884 >>> turtle.hideturtle()
885 >>> print turtle.isvisible():
886 False
887
888
889Appearance
890~~~~~~~~~~
891
892.. function:: shape(name=None)
893
894 :param name: a string which is a valid shapename
895
896 Set turtle shape to shape with given *name* or, if name is not given, return
897 name of current shape. Shape with *name* must exist in the TurtleScreen's
898 shape dictionary. Initially there are the following polygon shapes: "arrow",
899 "turtle", "circle", "square", "triangle", "classic". To learn about how to
900 deal with shapes see Screen method :func:`register_shape`.
901
902 >>> turtle.shape()
903 "arrow"
904 >>> turtle.shape("turtle")
905 >>> turtle.shape()
906 "turtle"
907
908
909.. function:: resizemode(rmode=None)
910
911 :param rmode: one of the strings "auto", "user", "noresize"
912
913 Set resizemode to one of the values: "auto", "user", "noresize". If *rmode*
914 is not given, return current resizemode. Different resizemodes have the
915 following effects:
916
917 - "auto": adapts the appearance of the turtle corresponding to the value of pensize.
918 - "user": adapts the appearance of the turtle according to the values of
919 stretchfactor and outlinewidth (outline), which are set by
920 :func:`shapesize`.
921 - "noresize": no adaption of the turtle's appearance takes place.
922
923 resizemode("user") is called by :func:`shapesize` when used with arguments.
924
925 >>> turtle.resizemode("noresize")
926 >>> turtle.resizemode()
927 "noresize"
928
929
930.. function:: shapesize(stretch_wid=None, stretch_len=None, outline=None)
931
932 :param stretch_wid: positive number
933 :param stretch_len: positive number
934 :param outline: positive number
935
936 Return or set the pen's attributes x/y-stretchfactors and/or outline. Set
937 resizemode to "user". If and only if resizemode is set to "user", the turtle
938 will be displayed stretched according to its stretchfactors: *stretch_wid* is
939 stretchfactor perpendicular to its orientation, *stretch_len* is
940 stretchfactor in direction of its orientation, *outline* determines the width
941 of the shapes's outline.
942
943 >>> turtle.resizemode("user")
944 >>> turtle.shapesize(5, 5, 12)
945 >>> turtle.shapesize(outline=8)
946
947
948.. function:: tilt(angle)
949
950 :param angle: a number
951
952 Rotate the turtleshape by *angle* from its current tilt-angle, but do *not*
953 change the turtle's heading (direction of movement).
954
955 >>> turtle.shape("circle")
956 >>> turtle.shapesize(5,2)
957 >>> turtle.tilt(30)
958 >>> turtle.fd(50)
959 >>> turtle.tilt(30)
960 >>> turtle.fd(50)
961
962
963.. function:: settiltangle(angle)
964
965 :param angle: a number
966
967 Rotate the turtleshape to point in the direction specified by *angle*,
968 regardless of its current tilt-angle. *Do not* change the turtle's heading
969 (direction of movement).
970
971 >>> turtle.shape("circle")
972 >>> turtle.shapesize(5,2)
973 >>> turtle.settiltangle(45)
974 >>> stamp()
975 >>> turtle.fd(50)
976 >>> turtle.settiltangle(-45)
977 >>> stamp()
978 >>> turtle.fd(50)
979
980
981.. function:: tiltangle()
982
983 Return the current tilt-angle, i.e. the angle between the orientation of the
984 turtleshape and the heading of the turtle (its direction of movement).
985
986 >>> turtle.shape("circle")
987 >>> turtle.shapesize(5,2)
988 >>> turtle.tilt(45)
989 >>> turtle.tiltangle()
990 45
991
992
993Using events
994------------
995
996.. function:: onclick(fun, btn=1, add=None)
997
998 :param fun: a function with two arguments which will be called with the
999 coordinates of the clicked point on the canvas
1000 :param num: number of the mouse-button, defaults to 1 (left mouse button)
1001 :param add: ``True`` or ``False`` -- if ``True``, a new binding will be
1002 added, otherwise it will replace a former binding
1003
1004 Bind *fun* to mouse-click events on this turtle. If *fun* is ``None``,
1005 existing bindings are removed. Example for the anonymous turtle, i.e. the
1006 procedural way:
1007
1008 >>> def turn(x, y):
1009 ... left(180)
1010 ...
1011 >>> onclick(turn) # Now clicking into the turtle will turn it.
1012 >>> onclick(None) # event-binding will be removed
1013
1014
1015.. function:: onrelease(fun, btn=1, add=None)
1016
1017 :param fun: a function with two arguments which will be called with the
1018 coordinates of the clicked point on the canvas
1019 :param num: number of the mouse-button, defaults to 1 (left mouse button)
1020 :param add: ``True`` or ``False`` -- if ``True``, a new binding will be
1021 added, otherwise it will replace a former binding
1022
1023 Bind *fun* to mouse-button-release events on this turtle. If *fun* is
1024 ``None``, existing bindings are removed.
1025
1026 >>> class MyTurtle(Turtle):
1027 ... def glow(self,x,y):
1028 ... self.fillcolor("red")
1029 ... def unglow(self,x,y):
1030 ... self.fillcolor("")
1031 ...
1032 >>> turtle = MyTurtle()
1033 >>> turtle.onclick(turtle.glow) # clicking on turtle turns fillcolor red,
1034 >>> turtle.onrelease(turtle.unglow) # releasing turns it to transparent.
1035
1036
1037.. function:: ondrag(fun, btn=1, add=None)
1038
1039 :param fun: a function with two arguments which will be called with the
1040 coordinates of the clicked point on the canvas
1041 :param num: number of the mouse-button, defaults to 1 (left mouse button)
1042 :param add: ``True`` or ``False`` -- if ``True``, a new binding will be
1043 added, otherwise it will replace a former binding
1044
1045 Bind *fun* to mouse-move events on this turtle. If *fun* is ``None``,
1046 existing bindings are removed.
1047
1048 Remark: Every sequence of mouse-move-events on a turtle is preceded by a
1049 mouse-click event on that turtle.
1050
1051 >>> turtle.ondrag(turtle.goto)
1052 # Subsequently, clicking and dragging the Turtle will move it across
1053 # the screen thereby producing handdrawings (if pen is down).
1054
1055
1056Special Turtle methods
1057----------------------
1058
1059.. function:: begin_poly()
1060
1061 Start recording the vertices of a polygon. Current turtle position is first
1062 vertex of polygon.
1063
1064
1065.. function:: end_poly()
1066
1067 Stop recording the vertices of a polygon. Current turtle position is last
1068 vertex of polygon. This will be connected with the first vertex.
1069
1070
1071.. function:: get_poly()
1072
1073 Return the last recorded polygon.
1074
1075 >>> p = turtle.get_poly()
1076 >>> turtle.register_shape("myFavouriteShape", p)
1077
1078
1079.. function:: clone()
1080
1081 Create and return a clone of the turtle with same position, heading and
1082 turtle properties.
1083
1084 >>> mick = Turtle()
1085 >>> joe = mick.clone()
1086
1087
1088.. function:: getturtle()
1089
1090 Return the Turtle object itself. Only reasonable use: as a function to
1091 return the "anonymous turtle":
1092
1093 >>> pet = getturtle()
1094 >>> pet.fd(50)
1095 >>> pet
1096 <turtle.Turtle object at 0x01417350>
1097 >>> turtles()
1098 [<turtle.Turtle object at 0x01417350>]
1099
1100
1101.. function:: getscreen()
1102
1103 Return the :class:`TurtleScreen` object the turtle is drawing on.
1104 TurtleScreen methods can then be called for that object.
1105
1106 >>> ts = turtle.getscreen()
1107 >>> ts
1108 <turtle.Screen object at 0x01417710>
1109 >>> ts.bgcolor("pink")
1110
1111
1112.. function:: setundobuffer(size)
1113
1114 :param size: an integer or ``None``
1115
1116 Set or disable undobuffer. If *size* is an integer an empty undobuffer of
1117 given size is installed. *size* gives the maximum number of turtle actions
1118 that can be undone by the :func:`undo` method/function. If *size* is
1119 ``None``, the undobuffer is disabled.
1120
1121 >>> turtle.setundobuffer(42)
1122
1123
1124.. function:: undobufferentries()
1125
1126 Return number of entries in the undobuffer.
1127
1128 >>> while undobufferentries():
1129 ... undo()
1130
1131
1132.. function:: tracer(flag=None, delay=None)
1133
1134 A replica of the corresponding TurtleScreen method.
1135
1136 .. deprecated:: 2.6
1137
1138
1139.. function:: window_width()
1140 window_height()
1141
1142 Both are replicas of the corresponding TurtleScreen methods.
1143
1144 .. deprecated:: 2.6
1145
1146
1147.. _compoundshapes:
1148
1149Excursus about the use of compound shapes
1150-----------------------------------------
1151
1152To use compound turtle shapes, which consist of several polygons of different
1153color, you must use the helper class :class:`Shape` explicitly as described
1154below:
1155
11561. Create an empty Shape object of type "compound".
11572. Add as many components to this object as desired, using the
1158 :meth:`addcomponent` method.
1159
1160 For example:
1161
1162 >>> s = Shape("compound")
1163 >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5))
1164 >>> s.addcomponent(poly1, "red", "blue")
1165 >>> poly2 = ((0,0),(10,-5),(-10,-5))
1166 >>> s.addcomponent(poly2, "blue", "red")
1167
11683. Now add the Shape to the Screen's shapelist and use it:
1169
1170 >>> register_shape("myshape", s)
1171 >>> shape("myshape")
1172
1173
1174.. note::
1175
1176 The :class:`Shape` class is used internally by the :func:`register_shape`
1177 method in different ways. The application programmer has to deal with the
1178 Shape class *only* when using compound shapes like shown above!
1179
1180
1181Methods of TurtleScreen/Screen and corresponding functions
1182==========================================================
1183
1184Most of the examples in this section refer to a TurtleScreen instance called
1185``screen``.
1186
1187
1188Window control
1189--------------
1190
1191.. function:: bgcolor(*args)
1192
1193 :param args: a color string or three numbers in the range 0..colormode or a
1194 3-tuple of such numbers
1195
1196 Set or return background color of the TurtleScreen.
1197
1198 >>> screen.bgcolor("orange")
1199 >>> screen.bgcolor()
1200 "orange"
1201 >>> screen.bgcolor(0.5,0,0.5)
1202 >>> screen.bgcolor()
1203 "#800080"
1204
1205
1206.. function:: bgpic(picname=None)
1207
1208 :param picname: a string, name of a gif-file or ``"nopic"``, or ``None``
1209
1210 Set background image or return name of current backgroundimage. If *picname*
1211 is a filename, set the corresponding image as background. If *picname* is
1212 ``"nopic"``, delete background image, if present. If *picname* is ``None``,
1213 return the filename of the current backgroundimage.
1214
1215 >>> screen.bgpic()
1216 "nopic"
1217 >>> screen.bgpic("landscape.gif")
1218 >>> screen.bgpic()
1219 "landscape.gif"
1220
1221
1222.. function:: clear()
1223 clearscreen()
1224
1225 Delete all drawings and all turtles from the TurtleScreen. Reset the now
1226 empty TurtleScreen to its initial state: white background, no background
1227 image, no event bindings and tracing on.
1228
1229 .. note::
1230 This TurtleScreen method is available as a global function only under the
1231 name ``clearscreen``. The global function ``clear`` is another one
1232 derived from the Turtle method ``clear``.
1233
1234
1235.. function:: reset()
1236 resetscreen()
1237
1238 Reset all Turtles on the Screen to their initial state.
1239
1240 .. note::
1241 This TurtleScreen method is available as a global function only under the
1242 name ``resetscreen``. The global function ``reset`` is another one
1243 derived from the Turtle method ``reset``.
1244
1245
1246.. function:: screensize(canvwidth=None, canvheight=None, bg=None)
1247
1248 :param canvwidth: positive integer, new width of canvas in pixels
1249 :param canvheight: positive integer, new height of canvas in pixels
1250 :param bg: colorstring or color-tupel, new background color
1251
1252 If no arguments are given, return current (canvaswidth, canvasheight). Else
1253 resize the canvas the turtles are drawing on. Do not alter the drawing
1254 window. To observe hidden parts of the canvas, use the scrollbars. With this
1255 method, one can make visible those parts of a drawing which were outside the
1256 canvas before.
1257
1258 >>> turtle.screensize(2000,1500)
1259 # e.g. to search for an erroneously escaped turtle ;-)
1260
1261
1262.. function:: setworldcoordinates(llx, lly, urx, ury)
1263
1264 :param llx: a number, x-coordinate of lower left corner of canvas
1265 :param lly: a number, y-coordinate of lower left corner of canvas
1266 :param urx: a number, x-coordinate of upper right corner of canvas
1267 :param ury: a number, y-coordinate of upper right corner of canvas
1268
1269 Set up user-defined coordinate system and switch to mode "world" if
1270 necessary. This performs a ``screen.reset()``. If mode "world" is already
1271 active, all drawings are redrawn according to the new coordinates.
1272
1273 **ATTENTION**: in user-defined coordinate systems angles may appear
1274 distorted.
1275
1276 >>> screen.reset()
1277 >>> screen.setworldcoordinates(-50,-7.5,50,7.5)
1278 >>> for _ in range(72):
1279 ... left(10)
1280 ...
1281 >>> for _ in range(8):
Benjamin Peterson90f36732008-07-12 20:16:19 +00001282 ... left(45); fd(2) # a regular octagon
Georg Brandla2b34b82008-06-04 11:17:26 +00001283
1284
1285Animation control
1286-----------------
1287
1288.. function:: delay(delay=None)
1289
1290 :param delay: positive integer
1291
1292 Set or return the drawing *delay* in milliseconds. (This is approximately
Benjamin Peterson90f36732008-07-12 20:16:19 +00001293 the time interval between two consecutive canvas updates.) The longer the
Georg Brandla2b34b82008-06-04 11:17:26 +00001294 drawing delay, the slower the animation.
1295
1296 Optional argument:
1297
1298 >>> screen.delay(15)
1299 >>> screen.delay()
1300 15
1301
1302
1303.. function:: tracer(n=None, delay=None)
1304
1305 :param n: nonnegative integer
1306 :param delay: nonnegative integer
1307
1308 Turn turtle animation on/off and set delay for update drawings. If *n* is
1309 given, only each n-th regular screen update is really performed. (Can be
1310 used to accelerate the drawing of complex graphics.) Second argument sets
1311 delay value (see :func:`delay`).
1312
1313 >>> screen.tracer(8, 25)
1314 >>> dist = 2
1315 >>> for i in range(200):
1316 ... fd(dist)
1317 ... rt(90)
1318 ... dist += 2
1319
1320
1321.. function:: update()
1322
1323 Perform a TurtleScreen update. To be used when tracer is turned off.
1324
1325See also the RawTurtle/Turtle method :func:`speed`.
1326
1327
1328Using screen events
1329-------------------
1330
1331.. function:: listen(xdummy=None, ydummy=None)
1332
1333 Set focus on TurtleScreen (in order to collect key-events). Dummy arguments
1334 are provided in order to be able to pass :func:`listen` to the onclick method.
1335
1336
1337.. function:: onkey(fun, key)
1338
1339 :param fun: a function with no arguments or ``None``
1340 :param key: a string: key (e.g. "a") or key-symbol (e.g. "space")
1341
1342 Bind *fun* to key-release event of key. If *fun* is ``None``, event bindings
1343 are removed. Remark: in order to be able to register key-events, TurtleScreen
1344 must have the focus. (See method :func:`listen`.)
1345
1346 >>> def f():
1347 ... fd(50)
1348 ... lt(60)
1349 ...
1350 >>> screen.onkey(f, "Up")
1351 >>> screen.listen()
1352
1353
1354.. function:: onclick(fun, btn=1, add=None)
1355 onscreenclick(fun, btn=1, add=None)
1356
1357 :param fun: a function with two arguments which will be called with the
1358 coordinates of the clicked point on the canvas
1359 :param num: number of the mouse-button, defaults to 1 (left mouse button)
1360 :param add: ``True`` or ``False`` -- if ``True``, a new binding will be
1361 added, otherwise it will replace a former binding
1362
1363 Bind *fun* to mouse-click events on this screen. If *fun* is ``None``,
1364 existing bindings are removed.
1365
1366 Example for a TurtleScreen instance named ``screen`` and a Turtle instance
1367 named turtle:
1368
1369 >>> screen.onclick(turtle.goto)
1370 # Subsequently clicking into the TurtleScreen will
1371 # make the turtle move to the clicked point.
1372 >>> screen.onclick(None) # remove event binding again
1373
1374 .. note::
1375 This TurtleScreen method is available as a global function only under the
1376 name ``onscreenclick``. The global function ``onclick`` is another one
1377 derived from the Turtle method ``onclick``.
1378
1379
1380.. function:: ontimer(fun, t=0)
1381
1382 :param fun: a function with no arguments
1383 :param t: a number >= 0
1384
1385 Install a timer that calls *fun* after *t* milliseconds.
1386
1387 >>> running = True
1388 >>> def f():
1389 if running:
1390 fd(50)
1391 lt(60)
1392 screen.ontimer(f, 250)
1393 >>> f() ### makes the turtle marching around
1394 >>> running = False
1395
1396
1397Settings and special methods
1398----------------------------
1399
1400.. function:: mode(mode=None)
1401
1402 :param mode: one of the strings "standard", "logo" or "world"
1403
1404 Set turtle mode ("standard", "logo" or "world") and perform reset. If mode
1405 is not given, current mode is returned.
1406
1407 Mode "standard" is compatible with old :mod:`turtle`. Mode "logo" is
1408 compatible with most Logo turtle graphics. Mode "world" uses user-defined
1409 "world coordinates". **Attention**: in this mode angles appear distorted if
1410 ``x/y`` unit-ratio doesn't equal 1.
1411
1412 ============ ========================= ===================
1413 Mode Initial turtle heading positive angles
1414 ============ ========================= ===================
1415 "standard" to the right (east) counterclockwise
1416 "logo" upward (north) clockwise
1417 ============ ========================= ===================
1418
1419 >>> mode("logo") # resets turtle heading to north
1420 >>> mode()
1421 "logo"
1422
1423
1424.. function:: colormode(cmode=None)
1425
1426 :param cmode: one of the values 1.0 or 255
1427
1428 Return the colormode or set it to 1.0 or 255. Subsequently *r*, *g*, *b*
1429 values of color triples have to be in the range 0..\ *cmode*.
1430
1431 >>> screen.colormode()
1432 1.0
1433 >>> screen.colormode(255)
1434 >>> turtle.pencolor(240,160,80)
1435
1436
1437.. function:: getcanvas()
1438
1439 Return the Canvas of this TurtleScreen. Useful for insiders who know what to
1440 do with a Tkinter Canvas.
1441
1442 >>> cv = screen.getcanvas()
1443 >>> cv
1444 <turtle.ScrolledCanvas instance at 0x010742D8>
1445
1446
1447.. function:: getshapes()
1448
1449 Return a list of names of all currently available turtle shapes.
1450
1451 >>> screen.getshapes()
1452 ["arrow", "blank", "circle", ..., "turtle"]
1453
1454
1455.. function:: register_shape(name, shape=None)
1456 addshape(name, shape=None)
1457
1458 There are three different ways to call this function:
1459
1460 (1) *name* is the name of a gif-file and *shape* is ``None``: Install the
1461 corresponding image shape.
1462
1463 .. note::
1464 Image shapes *do not* rotate when turning the turtle, so they do not
1465 display the heading of the turtle!
1466
1467 (2) *name* is an arbitrary string and *shape* is a tuple of pairs of
1468 coordinates: Install the corresponding polygon shape.
1469
1470 (3) *name* is an arbitrary string and shape is a (compound) :class:`Shape`
1471 object: Install the corresponding compound shape.
1472
1473 Add a turtle shape to TurtleScreen's shapelist. Only thusly registered
1474 shapes can be used by issuing the command ``shape(shapename)``.
1475
1476 >>> screen.register_shape("turtle.gif")
1477 >>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
1478
1479
1480.. function:: turtles()
1481
1482 Return the list of turtles on the screen.
1483
1484 >>> for turtle in screen.turtles()
1485 ... turtle.color("red")
1486
1487
1488.. function:: window_height()
1489
1490 Return the height of the turtle window.
1491
1492 >>> screen.window_height()
1493 480
1494
1495
1496.. function:: window_width()
1497
1498 Return the width of the turtle window.
1499
1500 >>> screen.window_width()
1501 640
1502
1503
1504.. _screenspecific:
1505
1506Methods specific to Screen, not inherited from TurtleScreen
Martin v. Löwis87184592008-06-04 06:29:55 +00001507-----------------------------------------------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +00001508
Georg Brandla2b34b82008-06-04 11:17:26 +00001509.. function:: bye()
Georg Brandl8ec7f652007-08-15 14:28:01 +00001510
Georg Brandla2b34b82008-06-04 11:17:26 +00001511 Shut the turtlegraphics window.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001512
Georg Brandl8ec7f652007-08-15 14:28:01 +00001513
Georg Brandla2b34b82008-06-04 11:17:26 +00001514.. function:: exitonclick()
Georg Brandl8ec7f652007-08-15 14:28:01 +00001515
Georg Brandla2b34b82008-06-04 11:17:26 +00001516 Bind bye() method to mouse clicks on the Screen.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001517
Georg Brandl8ec7f652007-08-15 14:28:01 +00001518
Georg Brandla2b34b82008-06-04 11:17:26 +00001519 If the value "using_IDLE" in the configuration dictionary is ``False``
1520 (default value), also enter mainloop. Remark: If IDLE with the ``-n`` switch
1521 (no subprocess) is used, this value should be set to ``True`` in
1522 :file:`turtle.cfg`. In this case IDLE's own mainloop is active also for the
1523 client script.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001524
Georg Brandl8ec7f652007-08-15 14:28:01 +00001525
Georg Brandla2b34b82008-06-04 11:17:26 +00001526.. function:: setup(width=_CFG["width"], height=_CFG["height"], startx=_CFG["leftright"], starty=_CFG["topbottom"])
Georg Brandl8ec7f652007-08-15 14:28:01 +00001527
Georg Brandla2b34b82008-06-04 11:17:26 +00001528 Set the size and position of the main window. Default values of arguments
1529 are stored in the configuration dicionary and can be changed via a
1530 :file:`turtle.cfg` file.
1531
1532 :param width: if an integer, a size in pixels, if a float, a fraction of the
1533 screen; default is 50% of screen
1534 :param height: if an integer, the height in pixels, if a float, a fraction of
1535 the screen; default is 75% of screen
1536 :param startx: if positive, starting position in pixels from the left
1537 edge of the screen, if negative from the right edge, if None,
1538 center window horizontally
1539 :param startx: if positive, starting position in pixels from the top
1540 edge of the screen, if negative from the bottom edge, if None,
1541 center window vertically
1542
1543 >>> screen.setup (width=200, height=200, startx=0, starty=0)
1544 # sets window to 200x200 pixels, in upper left of screen
1545 >>> screen.setup(width=.75, height=0.5, startx=None, starty=None)
1546 # sets window to 75% of screen by 50% of screen and centers
Georg Brandl8ec7f652007-08-15 14:28:01 +00001547
Georg Brandl8ec7f652007-08-15 14:28:01 +00001548
Georg Brandla2b34b82008-06-04 11:17:26 +00001549.. function:: title(titlestring)
1550
1551 :param titlestring: a string that is shown in the titlebar of the turtle
1552 graphics window
1553
1554 Set title of turtle window to *titlestring*.
1555
1556 >>> screen.title("Welcome to the turtle zoo!")
1557
1558
1559The public classes of the module :mod:`turtle`
1560==============================================
1561
1562
1563.. class:: RawTurtle(canvas)
1564 RawPen(canvas)
1565
1566 :param canvas: a :class:`Tkinter.Canvas`, a :class:`ScrolledCanvas` or a
1567 :class:`TurtleScreen`
1568
1569 Create a turtle. The turtle has all methods described above as "methods of
1570 Turtle/RawTurtle".
1571
1572
1573.. class:: Turtle()
1574
1575 Subclass of RawTurtle, has the same interface but draws on a default
1576 :class:`Screen` object created automatically when needed for the first time.
1577
1578
1579.. class:: TurtleScreen(cv)
1580
1581 :param cv: a :class:`Tkinter.Canvas`
1582
1583 Provides screen oriented methods like :func:`setbg` etc. that are described
1584 above.
1585
1586.. class:: Screen()
1587
1588 Subclass of TurtleScreen, with :ref:`four methods added <screenspecific>`.
1589
1590
1591.. class:: ScrolledCavas(master)
1592
1593 :param master: some Tkinter widget to contain the ScrolledCanvas, i.e.
1594 a Tkinter-canvas with scrollbars added
1595
1596 Used by class Screen, which thus automatically provides a ScrolledCanvas as
1597 playground for the turtles.
1598
1599.. class:: Shape(type_, data)
1600
1601 :param type\_: one of the strings "polygon", "image", "compound"
1602
1603 Data structure modeling shapes. The pair ``(type_, data)`` must follow this
1604 specification:
1605
1606
1607 =========== ===========
1608 *type_* *data*
1609 =========== ===========
1610 "polygon" a polygon-tuple, i.e. a tuple of pairs of coordinates
1611 "image" an image (in this form only used internally!)
1612 "compound" ``None`` (a compund shape has to be constructed using the
1613 :meth:`addcomponent` method)
1614 =========== ===========
1615
1616 .. method:: addcomponent(poly, fill, outline=None)
1617
1618 :param poly: a polygon, i.e. a tuple of pairs of numbers
1619 :param fill: a color the *poly* will be filled with
1620 :param outline: a color for the poly's outline (if given)
1621
1622 Example:
1623
1624 >>> poly = ((0,0),(10,-5),(0,10),(-10,-5))
1625 >>> s = Shape("compound")
1626 >>> s.addcomponent(poly, "red", "blue")
1627 # .. add more components and then use register_shape()
1628
1629 See :ref:`compoundshapes`.
1630
1631
1632.. class:: Vec2D(x, y)
1633
1634 A two-dimensional vector class, used as a helper class for implementing
1635 turtle graphics. May be useful for turtle graphics programs too. Derived
1636 from tuple, so a vector is a tuple!
1637
1638 Provides (for *a*, *b* vectors, *k* number):
1639
1640 * ``a + b`` vector addition
1641 * ``a - b`` vector subtraction
1642 * ``a * b`` inner product
1643 * ``k * a`` and ``a * k`` multiplication with scalar
1644 * ``abs(a)`` absolute value of a
1645 * ``a.rotate(angle)`` rotation
1646
1647
1648Help and configuration
1649======================
1650
1651How to use help
1652---------------
1653
1654The public methods of the Screen and Turtle classes are documented extensively
1655via docstrings. So these can be used as online-help via the Python help
1656facilities:
1657
1658- When using IDLE, tooltips show the signatures and first lines of the
1659 docstrings of typed in function-/method calls.
1660
1661- Calling :func:`help` on methods or functions displays the docstrings::
1662
1663 >>> help(Screen.bgcolor)
1664 Help on method bgcolor in module turtle:
Martin v. Löwis87184592008-06-04 06:29:55 +00001665
Georg Brandla2b34b82008-06-04 11:17:26 +00001666 bgcolor(self, *args) unbound turtle.Screen method
1667 Set or return backgroundcolor of the TurtleScreen.
Martin v. Löwis87184592008-06-04 06:29:55 +00001668
Georg Brandla2b34b82008-06-04 11:17:26 +00001669 Arguments (if given): a color string or three numbers
1670 in the range 0..colormode or a 3-tuple of such numbers.
Martin v. Löwis87184592008-06-04 06:29:55 +00001671
Martin v. Löwis87184592008-06-04 06:29:55 +00001672
Georg Brandla2b34b82008-06-04 11:17:26 +00001673 >>> screen.bgcolor("orange")
1674 >>> screen.bgcolor()
1675 "orange"
1676 >>> screen.bgcolor(0.5,0,0.5)
1677 >>> screen.bgcolor()
1678 "#800080"
Martin v. Löwis87184592008-06-04 06:29:55 +00001679
Georg Brandla2b34b82008-06-04 11:17:26 +00001680 >>> help(Turtle.penup)
1681 Help on method penup in module turtle:
Martin v. Löwis87184592008-06-04 06:29:55 +00001682
Georg Brandla2b34b82008-06-04 11:17:26 +00001683 penup(self) unbound turtle.Turtle method
1684 Pull the pen up -- no drawing when moving.
Martin v. Löwis87184592008-06-04 06:29:55 +00001685
Georg Brandla2b34b82008-06-04 11:17:26 +00001686 Aliases: penup | pu | up
Martin v. Löwis87184592008-06-04 06:29:55 +00001687
Georg Brandla2b34b82008-06-04 11:17:26 +00001688 No argument
Martin v. Löwis87184592008-06-04 06:29:55 +00001689
Georg Brandla2b34b82008-06-04 11:17:26 +00001690 >>> turtle.penup()
Georg Brandl8ec7f652007-08-15 14:28:01 +00001691
Georg Brandla2b34b82008-06-04 11:17:26 +00001692- The docstrings of the functions which are derived from methods have a modified
1693 form::
Georg Brandl8ec7f652007-08-15 14:28:01 +00001694
Georg Brandla2b34b82008-06-04 11:17:26 +00001695 >>> help(bgcolor)
1696 Help on function bgcolor in module turtle:
Martin v. Löwis87184592008-06-04 06:29:55 +00001697
Georg Brandla2b34b82008-06-04 11:17:26 +00001698 bgcolor(*args)
1699 Set or return backgroundcolor of the TurtleScreen.
Martin v. Löwis87184592008-06-04 06:29:55 +00001700
Georg Brandla2b34b82008-06-04 11:17:26 +00001701 Arguments (if given): a color string or three numbers
1702 in the range 0..colormode or a 3-tuple of such numbers.
Martin v. Löwis87184592008-06-04 06:29:55 +00001703
Georg Brandla2b34b82008-06-04 11:17:26 +00001704 Example::
Martin v. Löwis87184592008-06-04 06:29:55 +00001705
Georg Brandla2b34b82008-06-04 11:17:26 +00001706 >>> bgcolor("orange")
1707 >>> bgcolor()
1708 "orange"
1709 >>> bgcolor(0.5,0,0.5)
1710 >>> bgcolor()
1711 "#800080"
1712
1713 >>> help(penup)
1714 Help on function penup in module turtle:
1715
1716 penup()
1717 Pull the pen up -- no drawing when moving.
1718
1719 Aliases: penup | pu | up
1720
1721 No argument
1722
1723 Example:
1724 >>> penup()
Georg Brandl8ec7f652007-08-15 14:28:01 +00001725
Georg Brandla2b34b82008-06-04 11:17:26 +00001726These modified docstrings are created automatically together with the function
1727definitions that are derived from the methods at import time.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001728
1729
Georg Brandla2b34b82008-06-04 11:17:26 +00001730Translation of docstrings into different languages
Martin v. Löwis87184592008-06-04 06:29:55 +00001731--------------------------------------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +00001732
Georg Brandla2b34b82008-06-04 11:17:26 +00001733There is a utility to create a dictionary the keys of which are the method names
1734and the values of which are the docstrings of the public methods of the classes
1735Screen and Turtle.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001736
Georg Brandla2b34b82008-06-04 11:17:26 +00001737.. function:: write_docstringdict(filename="turtle_docstringdict")
Georg Brandl8ec7f652007-08-15 14:28:01 +00001738
Georg Brandla2b34b82008-06-04 11:17:26 +00001739 :param filename: a string, used as filename
Georg Brandl8ec7f652007-08-15 14:28:01 +00001740
Georg Brandla2b34b82008-06-04 11:17:26 +00001741 Create and write docstring-dictionary to a Python script with the given
1742 filename. This function has to be called explicitly (it is not used by the
1743 turtle graphics classes). The docstring dictionary will be written to the
1744 Python script :file:`{filename}.py`. It is intended to serve as a template
1745 for translation of the docstrings into different languages.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001746
Georg Brandla2b34b82008-06-04 11:17:26 +00001747If you (or your students) want to use :mod:`turtle` with online help in your
1748native language, you have to translate the docstrings and save the resulting
1749file as e.g. :file:`turtle_docstringdict_german.py`.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001750
Georg Brandla2b34b82008-06-04 11:17:26 +00001751If you have an appropriate entry in your :file:`turtle.cfg` file this dictionary
1752will be read in at import time and will replace the original English docstrings.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001753
Georg Brandla2b34b82008-06-04 11:17:26 +00001754At the time of this writing there are docstring dictionaries in German and in
1755Italian. (Requests please to glingl@aon.at.)
1756
1757
1758
1759How to configure Screen and Turtles
Martin v. Löwis87184592008-06-04 06:29:55 +00001760-----------------------------------
Georg Brandl8ec7f652007-08-15 14:28:01 +00001761
Georg Brandla2b34b82008-06-04 11:17:26 +00001762The built-in default configuration mimics the appearance and behaviour of the
1763old turtle module in order to retain best possible compatibility with it.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001764
Georg Brandla2b34b82008-06-04 11:17:26 +00001765If you want to use a different configuration which better reflects the features
1766of this module or which better fits to your needs, e.g. for use in a classroom,
1767you can prepare a configuration file ``turtle.cfg`` which will be read at import
1768time and modify the configuration according to its settings.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001769
Georg Brandla2b34b82008-06-04 11:17:26 +00001770The built in configuration would correspond to the following turtle.cfg::
Georg Brandl8ec7f652007-08-15 14:28:01 +00001771
Georg Brandla2b34b82008-06-04 11:17:26 +00001772 width = 0.5
1773 height = 0.75
1774 leftright = None
1775 topbottom = None
1776 canvwidth = 400
1777 canvheight = 300
1778 mode = standard
1779 colormode = 1.0
1780 delay = 10
1781 undobuffersize = 1000
1782 shape = classic
1783 pencolor = black
1784 fillcolor = black
1785 resizemode = noresize
1786 visible = True
1787 language = english
1788 exampleturtle = turtle
1789 examplescreen = screen
1790 title = Python Turtle Graphics
1791 using_IDLE = False
Georg Brandl8ec7f652007-08-15 14:28:01 +00001792
Martin v. Löwis87184592008-06-04 06:29:55 +00001793Short explanation of selected entries:
Georg Brandl8ec7f652007-08-15 14:28:01 +00001794
Georg Brandla2b34b82008-06-04 11:17:26 +00001795- The first four lines correspond to the arguments of the :meth:`Screen.setup`
1796 method.
1797- Line 5 and 6 correspond to the arguments of the method
1798 :meth:`Screen.screensize`.
1799- *shape* can be any of the built-in shapes, e.g: arrow, turtle, etc. For more
1800 info try ``help(shape)``.
1801- If you want to use no fillcolor (i.e. make the turtle transparent), you have
1802 to write ``fillcolor = ""`` (but all nonempty strings must not have quotes in
1803 the cfg-file).
1804- If you want to reflect the turtle its state, you have to use ``resizemode =
1805 auto``.
1806- If you set e.g. ``language = italian`` the docstringdict
1807 :file:`turtle_docstringdict_italian.py` will be loaded at import time (if
1808 present on the import path, e.g. in the same directory as :mod:`turtle`.
1809- The entries *exampleturtle* and *examplescreen* define the names of these
1810 objects as they occur in the docstrings. The transformation of
1811 method-docstrings to function-docstrings will delete these names from the
1812 docstrings.
1813- *using_IDLE*: Set this to ``True`` if you regularly work with IDLE and its -n
1814 switch ("no subprocess"). This will prevent :func:`exitonclick` to enter the
1815 mainloop.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001816
Georg Brandla2b34b82008-06-04 11:17:26 +00001817There can be a :file:`turtle.cfg` file in the directory where :mod:`turtle` is
1818stored and an additional one in the current working directory. The latter will
1819override the settings of the first one.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001820
Georg Brandla2b34b82008-06-04 11:17:26 +00001821The :file:`Demo/turtle` directory contains a :file:`turtle.cfg` file. You can
1822study it as an example and see its effects when running the demos (preferably
1823not from within the demo-viewer).
Georg Brandl8ec7f652007-08-15 14:28:01 +00001824
Georg Brandla2b34b82008-06-04 11:17:26 +00001825
1826Demo scripts
1827============
1828
1829There is a set of demo scripts in the turtledemo directory located in the
1830:file:`Demo/turtle` directory in the source distribution.
1831
Martin v. Löwis87184592008-06-04 06:29:55 +00001832It contains:
Georg Brandl8ec7f652007-08-15 14:28:01 +00001833
Georg Brandla2b34b82008-06-04 11:17:26 +00001834- a set of 15 demo scripts demonstrating differet features of the new module
1835 :mod:`turtle`
1836- a demo viewer :file:`turtleDemo.py` which can be used to view the sourcecode
1837 of the scripts and run them at the same time. 14 of the examples can be
1838 accessed via the Examples menu; all of them can also be run standalone.
1839- The example :file:`turtledemo_two_canvases.py` demonstrates the simultaneous
1840 use of two canvases with the turtle module. Therefore it only can be run
1841 standalone.
1842- There is a :file:`turtle.cfg` file in this directory, which also serves as an
1843 example for how to write and use such files.
1844
Martin v. Löwis87184592008-06-04 06:29:55 +00001845The demoscripts are:
Georg Brandl8ec7f652007-08-15 14:28:01 +00001846
Martin v. Löwis87184592008-06-04 06:29:55 +00001847+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001848| Name | Description | Features |
Martin v. Löwis87184592008-06-04 06:29:55 +00001849+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001850| bytedesign | complex classical | :func:`tracer`, delay,|
1851| | turtlegraphics pattern | :func:`update` |
Martin v. Löwis87184592008-06-04 06:29:55 +00001852+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001853| chaos | graphs verhust dynamics, | world coordinates |
1854| | proves that you must not | |
1855| | trust computers' computations| |
Martin v. Löwis87184592008-06-04 06:29:55 +00001856+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001857| clock | analog clock showing time | turtles as clock's |
1858| | of your computer | hands, ontimer |
Martin v. Löwis87184592008-06-04 06:29:55 +00001859+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001860| colormixer | experiment with r, g, b | :func:`ondrag` |
Martin v. Löwis87184592008-06-04 06:29:55 +00001861+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001862| fractalcurves | Hilbert & Koch curves | recursion |
Martin v. Löwis87184592008-06-04 06:29:55 +00001863+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001864| lindenmayer | ethnomathematics | L-System |
1865| | (indian kolams) | |
Martin v. Löwis87184592008-06-04 06:29:55 +00001866+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001867| minimal_hanoi | Towers of Hanoi | Rectangular Turtles |
1868| | | as Hanoi discs |
1869| | | (shape, shapesize) |
Martin v. Löwis87184592008-06-04 06:29:55 +00001870+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001871| paint | super minimalistic | :func:`onclick` |
1872| | drawing program | |
Martin v. Löwis87184592008-06-04 06:29:55 +00001873+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001874| peace | elementary | turtle: appearance |
1875| | | and animation |
Martin v. Löwis87184592008-06-04 06:29:55 +00001876+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001877| penrose | aperiodic tiling with | :func:`stamp` |
1878| | kites and darts | |
Martin v. Löwis87184592008-06-04 06:29:55 +00001879+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001880| planet_and_moon| simulation of | compound shapes, |
1881| | gravitational system | :class:`Vec2D` |
Martin v. Löwis87184592008-06-04 06:29:55 +00001882+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001883| tree | a (graphical) breadth | :func:`clone` |
Martin v. Löwis87184592008-06-04 06:29:55 +00001884| | first tree (using generators)| |
1885+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001886| wikipedia | a pattern from the wikipedia | :func:`clone`, |
1887| | article on turtle graphics | :func:`undo` |
Martin v. Löwis87184592008-06-04 06:29:55 +00001888+----------------+------------------------------+-----------------------+
Georg Brandla2b34b82008-06-04 11:17:26 +00001889| yingyang | another elementary example | :func:`circle` |
Martin v. Löwis87184592008-06-04 06:29:55 +00001890+----------------+------------------------------+-----------------------+
Georg Brandl8ec7f652007-08-15 14:28:01 +00001891
Georg Brandla2b34b82008-06-04 11:17:26 +00001892Have fun!