From ee251cf4103a99c037de77029eeb2eef4239f5a3 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Sun, 20 Sep 2026 11:43:08 +0100 Subject: [PATCH 1/5] Rewrite `turtle` module docs introduction --- Doc/includes/optional-module.rst | 1 + Doc/library/turtle.rst | 95 ++++++++++++-------------------- 2 files changed, 37 insertions(+), 59 deletions(-) diff --git a/Doc/includes/optional-module.rst b/Doc/includes/optional-module.rst index 262e73f2eaa09fb..d37f18227f73725 100644 --- a/Doc/includes/optional-module.rst +++ b/Doc/includes/optional-module.rst @@ -7,3 +7,4 @@ If you are the distributor, see :ref:`optional-module-requirements`. .. Similar notes appear in the docs of the modules: - zipfile - tarfile + - turtle diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst index f28c4230f3d6b89..249004631ce9871 100644 --- a/Doc/library/turtle.rst +++ b/Doc/library/turtle.rst @@ -24,25 +24,6 @@ -------------- -Introduction -============ - -Turtle graphics is an implementation of `the popular geometric drawing tools -introduced in Logo `_, developed by Wally Feurzeig, Seymour Papert and Cynthia Solomon -in 1967. - -.. include:: ../includes/optional-module.rst - - -Get started -=========== - -Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an ``import turtle``, give it the -command ``turtle.forward(15)``, and it moves (on-screen!) 15 pixels in the -direction it is facing, drawing a line as it moves. Give it the command -``turtle.right(25)``, and it rotates in-place 25 degrees clockwise. - .. sidebar:: Turtle star Turtle can draw intricate shapes using programs that repeat simple @@ -51,18 +32,35 @@ direction it is facing, drawing a line as it moves. Give it the command .. image:: turtle-star.png :align: center -In Python, turtle graphics provides a representation of a physical "turtle" -(a little robot with a pen) that draws on a sheet of paper on the floor. +Imagine a robotic turtle starting at (0, 0) in the x-y plane. +After an ``import turtle``, give it the command ``turtle.forward(15)``, and it +moves (on-screen!) 15 pixels in the direction it is facing, drawing a line as +it moves. Give it the command ``turtle.right(25)``, and it rotates in-place 25 +degrees clockwise. + +Turtle graphics is an implementation of `the drawing tools introduced in Logo +`_ in 1967. It was created as an +educational tool, and its instant, visible feedback makes it an effective way +for learners to encounter programming concepts. It is also a convenient way to +produce simple graphical output without bringing in external libraries. + +This document includes four main sections: -It's an effective and well-proven way for learners to encounter -programming concepts and interaction with software, as it provides instant, -visible feedback. It also provides convenient access to graphical output -in general. +* :ref:`turtle-tutorial` teaches the basics of turtle drawing. +* :ref:`turtle-reference` describes the functions, methods and classes this + module defines. +* :ref:`turtle-howtos` details how to handle specific tasks. +* :ref:`turtle-explanation` provides background on the object-oriented + interface. + +.. note:: -Turtle drawing was originally created as an educational tool, to be used by -teachers in the classroom. For the programmer who needs to produce some -graphical output it can be a way to do that without the overhead of -introducing more complex or external libraries into their work. + Turtle graphics requires the :mod:`tkinter` :term:`optional module`. + Installing it is not always straightforward, so check this in advance if + you're planning to use turtle graphics with a learner. + If it is missing from your copy of CPython, + look for documentation from your distributor (that is, + whoever provided Python to you). .. _turtle-tutorial: @@ -108,7 +106,8 @@ Notice how the turtle, represented by an arrow, points in different directions as you steer it. Experiment with those commands, and also with ``backward()`` and -``right()``. +``right()``. Many commands also have terser aliases, such as ``fd()`` for +:func:`forward`. Pen control @@ -188,38 +187,14 @@ Finally, complete the filling:: ``end_fill()`` command.) -.. _turtle-how-to: +.. _turtle-howtos: -How to... -========= +How-to guides +============= This section covers some typical turtle use-cases and approaches. -Get started as quickly as possible ----------------------------------- - -One of the joys of turtle graphics is the immediate, visual feedback that's -available from simple commands - it's an excellent way to introduce children -to programming ideas, with a minimum of overhead (not just children, of -course). - -The turtle module makes this possible by exposing all its basic functionality -as functions, available with ``from turtle import *``. The :ref:`turtle -graphics tutorial ` covers this approach. - -It's worth noting that many of the turtle commands also have even more terse -equivalents, such as ``fd()`` for :func:`forward`. These are especially -useful when working with learners for whom typing is not a skill. - -.. _note: - - You'll need to have the :mod:`Tk interface package ` installed on - your system for turtle graphics to work. Be warned that this is not - always straightforward, so check this in advance if you're planning to - use turtle graphics with a learner. - - Automatically begin and end filling ----------------------------------- @@ -323,8 +298,10 @@ The turtle's screen can be customised, for example:: t.screen.bgcolor("orange") -Turtle graphics reference -========================= +.. _turtle-reference: + +Reference +========= .. note:: From b37c46eb00e12f7d8d9fe4d9c910c6daece18048 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Sun, 20 Sep 2026 11:46:52 +0100 Subject: [PATCH 2/5] Preserve anchors --- Doc/library/turtle.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst index 249004631ce9871..e3e7f05972ac607 100644 --- a/Doc/library/turtle.rst +++ b/Doc/library/turtle.rst @@ -24,6 +24,8 @@ -------------- +.. _introduction: + .. sidebar:: Turtle star Turtle can draw intricate shapes using programs that repeat simple @@ -64,6 +66,8 @@ This document includes four main sections: .. _turtle-tutorial: +.. _get-started: +.. _get-started-as-quickly-as-possible: Tutorial ======== @@ -188,6 +192,8 @@ Finally, complete the filling:: .. _turtle-howtos: +.. _turtle-how-to: +.. _how-to: How-to guides ============= @@ -299,6 +305,7 @@ The turtle's screen can be customised, for example:: .. _turtle-reference: +.. _turtle-graphics-reference: Reference ========= From f95996438c29bc99d0808b980ed6f2ad2b2e6a86 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Sun, 20 Sep 2026 11:55:43 +0100 Subject: [PATCH 3/5] Oops, missed one, but it was never used anyway. --- Doc/tools/removed-ids.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Doc/tools/removed-ids.txt b/Doc/tools/removed-ids.txt index d3e4d581bbc9e8c..6b7c1dbeb3ce75a 100644 --- a/Doc/tools/removed-ids.txt +++ b/Doc/tools/removed-ids.txt @@ -89,3 +89,6 @@ library/dialog.html: (page missing) # Obsolete sections in 'turtle' docs library/turtle.html: changes-since-python-2-6 library/turtle.html: changes-since-python-3-0 + +# 'turtle' documentation reorganisation (gh-157847) +library/turtle.html: note From 87ab8fb30f9cc8c2d9d3e0b57d9527e3e5dfb2ff Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Sun, 20 Sep 2026 12:01:05 +0100 Subject: [PATCH 4/5] Remove `introduction` label to not conflict with other such labels --- Doc/library/turtle.rst | 2 -- Doc/tools/removed-ids.txt | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst index e3e7f05972ac607..362e76927cdec94 100644 --- a/Doc/library/turtle.rst +++ b/Doc/library/turtle.rst @@ -24,8 +24,6 @@ -------------- -.. _introduction: - .. sidebar:: Turtle star Turtle can draw intricate shapes using programs that repeat simple diff --git a/Doc/tools/removed-ids.txt b/Doc/tools/removed-ids.txt index 6b7c1dbeb3ce75a..05e374cb0637df5 100644 --- a/Doc/tools/removed-ids.txt +++ b/Doc/tools/removed-ids.txt @@ -92,3 +92,4 @@ library/turtle.html: changes-since-python-3-0 # 'turtle' documentation reorganisation (gh-157847) library/turtle.html: note +library/turtle.html: introduction From 5759a5d5583bdf6ffd1925363a8e7cc971ebb396 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Sun, 20 Sep 2026 18:23:57 +0100 Subject: [PATCH 5/5] Reorganize `turtle` documentation --- Doc/library/turtle.rst | 481 +++++++++++++++-------------------------- 1 file changed, 171 insertions(+), 310 deletions(-) diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst index 362e76927cdec94..ae0d1ee167b9998 100644 --- a/Doc/library/turtle.rst +++ b/Doc/library/turtle.rst @@ -113,7 +113,7 @@ Experiment with those commands, and also with ``backward()`` and Pen control -~~~~~~~~~~~ +^^^^^^^^^^^ Try changing the color - for example, ``color('blue')`` - and width of the line - for example, ``width(3)`` - and then drawing again. @@ -123,7 +123,7 @@ You can also move the turtle around without drawing, by lifting up the pen: The turtle's position -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^ Send your turtle back to its starting-point (useful if it has disappeared off-screen):: @@ -189,279 +189,25 @@ Finally, complete the filling:: ``end_fill()`` command.) -.. _turtle-howtos: -.. _turtle-how-to: -.. _how-to: - -How-to guides -============= - -This section covers some typical turtle use-cases and approaches. - - -Automatically begin and end filling ------------------------------------ - -Starting with Python 3.14, you can use the :func:`fill` :term:`context manager` -instead of :func:`begin_fill` and :func:`end_fill` to automatically begin and -end fill. Here is an example:: - - with fill(): - for i in range(4): - forward(100) - right(90) - - forward(200) - -The code above is equivalent to:: - - begin_fill() - for i in range(4): - forward(100) - right(90) - end_fill() - - forward(200) - - -Use the ``turtle`` module namespace ------------------------------------ - -Using ``from turtle import *`` is convenient - but be warned that it imports a -rather large collection of objects, and if you're doing anything but turtle -graphics you run the risk of a name conflict (this becomes even more an issue -if you're using turtle graphics in a script where other modules might be -imported). - -The solution is to use ``import turtle`` - ``fd()`` becomes -``turtle.fd()``, ``width()`` becomes ``turtle.width()`` and so on. (If typing -"turtle" over and over again becomes tedious, use for example ``import turtle -as t`` instead.) - - -Use turtle graphics in a script -------------------------------- - -It's recommended to use the ``turtle`` module namespace as described -immediately above, for example:: - - import turtle as t - from random import random - - for i in range(100): - steps = int(random() * 100) - angle = int(random() * 360) - t.right(angle) - t.fd(steps) - -Another step is also required though - as soon as the script ends, Python -will also close the turtle's window. Add:: - - t.mainloop() - -to the end of the script. The script will now wait to be dismissed and -will not exit until it is terminated, for example by closing the turtle -graphics window. - - -Use object-oriented turtle graphics ------------------------------------ - -.. seealso:: :ref:`Explanation of the object-oriented interface ` - -Other than for very basic introductory purposes, or for trying things out -as quickly as possible, it's more usual and much more powerful to use the -object-oriented approach to turtle graphics. For example, this allows -multiple turtles on screen at once. - -In this approach, the various turtle commands are methods of objects (mostly of -``Turtle`` objects). You *can* use the object-oriented approach in the shell, -but it would be more typical in a Python script. - -The example above then becomes:: - - from turtle import Turtle - from random import random - - t = Turtle() - for i in range(100): - steps = int(random() * 100) - angle = int(random() * 360) - t.right(angle) - t.fd(steps) - - t.screen.mainloop() - -Note the last line. ``t.screen`` is an instance of the :class:`Screen` -that a Turtle instance exists on; it's created automatically along with -the turtle. - -The turtle's screen can be customised, for example:: - - t.screen.title('Object-oriented turtle demo') - t.screen.bgcolor("orange") - - .. _turtle-reference: .. _turtle-graphics-reference: Reference ========= -.. note:: - - In the following documentation the argument list for functions is given. - Methods, of course, have the additional first argument *self* which is - omitted here. - - -Turtle methods --------------- - -Turtle motion - Move and draw - | :func:`forward` | :func:`fd` - | :func:`backward` | :func:`bk` | :func:`back` - | :func:`right` | :func:`rt` - | :func:`left` | :func:`lt` - | :func:`goto` | :func:`setpos` | :func:`setposition` - | :func:`teleport` - | :func:`setx` - | :func:`sety` - | :func:`setheading` | :func:`seth` - | :func:`home` - | :func:`circle` - | :func:`dot` - | :func:`stamp` - | :func:`clearstamp` - | :func:`clearstamps` - | :func:`undo` - | :func:`speed` - - Tell Turtle's state - | :func:`position` | :func:`pos` - | :func:`towards` - | :func:`xcor` - | :func:`ycor` - | :func:`heading` - | :func:`distance` - - Setting and measurement - | :func:`degrees` - | :func:`radians` +.. _turtle-methods: +.. _methods-of-rawturtle-turtle-and-corresponding-functions: -Pen control - Drawing state - | :func:`pendown` | :func:`pd` | :func:`down` - | :func:`penup` | :func:`pu` | :func:`up` - | :func:`pensize` | :func:`width` - | :func:`pen` - | :func:`isdown` - - Color control - | :func:`color` - | :func:`pencolor` - | :func:`fillcolor` - - Filling - | :func:`filling` - | :func:`fill` - | :func:`begin_fill` - | :func:`end_fill` - - More drawing control - | :func:`reset` - | :func:`clear` - | :func:`write` - -Turtle state - Visibility - | :func:`showturtle` | :func:`st` - | :func:`hideturtle` | :func:`ht` - | :func:`isvisible` - - Appearance - | :func:`shape` - | :func:`resizemode` - | :func:`shapesize` | :func:`turtlesize` - | :func:`shearfactor` - | :func:`tiltangle` - | :func:`tilt` - | :func:`shapetransform` - | :func:`get_shapepoly` - -Using events - | :func:`onclick` - | :func:`onrelease` - | :func:`ondrag` - -Special Turtle methods - | :func:`poly` - | :func:`begin_poly` - | :func:`end_poly` - | :func:`get_poly` - | :func:`clone` - | :func:`getturtle` | :func:`getpen` - | :func:`getscreen` - | :func:`setundobuffer` - | :func:`undobufferentries` - - -Methods of TurtleScreen/Screen ------------------------------- - -Window control - | :func:`bgcolor` - | :func:`bgpic` - | :func:`clearscreen` - | :func:`resetscreen` - | :func:`screensize` - | :func:`setworldcoordinates` - -Animation control - | :func:`no_animation` - | :func:`delay` - | :func:`tracer` - | :func:`update` - -Using screen events - | :func:`listen` - | :func:`onkey` | :func:`onkeyrelease` - | :func:`onkeypress` - | :func:`onclick` | :func:`onscreenclick` - | :func:`ontimer` - | :func:`mainloop` | :func:`done` - -Settings and special methods - | :func:`mode` - | :func:`colormode` - | :func:`getcanvas` - | :func:`getshapes` - | :func:`register_shape` | :func:`addshape` - | :func:`turtles` - | :func:`window_height` - | :func:`window_width` - -Input methods - | :func:`textinput` - | :func:`numinput` - -Methods specific to Screen - | :func:`bye` - | :func:`exitonclick` - | :func:`save` - | :func:`setup` - | :func:`title` - - -Methods of RawTurtle/Turtle and corresponding functions -======================================================= +Turtle methods and functions +---------------------------- Most of the examples in this section refer to a Turtle instance called ``turtle``. -Turtle motion -------------- +.. _turtle-motion: + +Move and draw +^^^^^^^^^^^^^ .. function:: forward(distance) fd(distance) @@ -899,7 +645,7 @@ Turtle motion Tell Turtle's state -------------------- +^^^^^^^^^^^^^^^^^^^ .. function:: position() pos() @@ -999,7 +745,7 @@ Tell Turtle's state Settings for measurement ------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^ .. function:: degrees(fullcircle=360.0) @@ -1050,7 +796,7 @@ Settings for measurement Pen control ------------ +^^^^^^^^^^^ Drawing state ~~~~~~~~~~~~~ @@ -1403,7 +1149,7 @@ More drawing control Turtle state ------------- +^^^^^^^^^^^^ Visibility ~~~~~~~~~~ @@ -1631,7 +1377,7 @@ Appearance Using events ------------- +^^^^^^^^^^^^ .. function:: onclick(fun, btn=1, add=None) :noindex: @@ -1705,7 +1451,7 @@ Using events Special Turtle methods ----------------------- +^^^^^^^^^^^^^^^^^^^^^^ .. function:: poly() @@ -1826,7 +1572,7 @@ Special Turtle methods .. _compoundshapes: Compound shapes ---------------- +^^^^^^^^^^^^^^^ To use compound turtle shapes, which consist of several polygons of different color, you must use the helper class :class:`Shape` explicitly as described @@ -1863,8 +1609,11 @@ below: Shape class *only* when using compound shapes like shown above! -Methods of TurtleScreen/Screen and corresponding functions -========================================================== +.. _methods-of-turtlescreen-screen: +.. _methods-of-turtlescreen-screen-and-corresponding-functions: + +Screen methods and functions +---------------------------- Most of the examples in this section refer to a TurtleScreen instance called ``screen``. @@ -1876,7 +1625,7 @@ Most of the examples in this section refer to a TurtleScreen instance called >>> screen = Screen() Window control --------------- +^^^^^^^^^^^^^^ .. function:: bgcolor() bgcolor(color, /) @@ -2022,7 +1771,7 @@ Window control Animation control ------------------ +^^^^^^^^^^^^^^^^^ .. function:: no_animation() @@ -2092,7 +1841,7 @@ See also the RawTurtle/Turtle method :func:`speed`. Using screen events -------------------- +^^^^^^^^^^^^^^^^^^^ .. function:: listen(xdummy=None, ydummy=None) @@ -2201,7 +1950,7 @@ Using screen events Input methods -------------- +^^^^^^^^^^^^^ .. function:: textinput(title, prompt) @@ -2237,7 +1986,7 @@ Input methods Settings and special methods ----------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. function:: mode(mode=None) @@ -2383,9 +2132,10 @@ Settings and special methods .. _screenspecific: +.. _methods-specific-to-screen-not-inherited-from-turtlescreen: -Methods specific to Screen, not inherited from TurtleScreen ------------------------------------------------------------ +Screen-only methods +^^^^^^^^^^^^^^^^^^^ .. function:: bye() @@ -2462,7 +2212,7 @@ Methods specific to Screen, not inherited from TurtleScreen Public classes -============== +-------------- .. class:: RawTurtle(canvas) @@ -2554,7 +2304,7 @@ Public classes Exceptions -========== +---------- The :mod:`!turtle` module defines the following exception: @@ -2572,43 +2322,120 @@ The :mod:`!turtle` module defines the following exception: turtle.TurtleGraphicsError: bad color string: blau -.. _turtle-explanation: +.. _turtle-howtos: +.. _turtle-how-to: +.. _how-to: -Explanation -=========== +How-to guides +============= -A turtle object draws on a screen object, and there a number of key classes in -the turtle object-oriented interface that can be used to create them and relate -them to each other. +This section covers some typical turtle use-cases and approaches. -A :class:`Turtle` instance will automatically create a :class:`Screen` -instance if one is not already present. -``Turtle`` is a subclass of :class:`RawTurtle`, which *doesn't* automatically -create a drawing surface - a *canvas* will need to be provided or created for -it. The *canvas* can be a :class:`!tkinter.Canvas`, :class:`ScrolledCanvas` -or :class:`TurtleScreen`. +Automatically begin and end filling +----------------------------------- +Starting with Python 3.14, you can use the :func:`fill` :term:`context manager` +instead of :func:`begin_fill` and :func:`end_fill` to automatically begin and +end fill. Here is an example:: -:class:`TurtleScreen` is the basic drawing surface for a -turtle. :class:`Screen` is a subclass of ``TurtleScreen``, and -includes :ref:`some additional methods ` for managing its -appearance (including size and title) and behaviour. ``TurtleScreen``'s -constructor needs a :class:`!tkinter.Canvas` or a -:class:`ScrolledCanvas` as an argument. + with fill(): + for i in range(4): + forward(100) + right(90) -The functional interface for turtle graphics uses the various methods of -``Turtle`` and ``TurtleScreen``/``Screen``. Behind the scenes, a screen -object is automatically created whenever a function derived from a ``Screen`` -method is called. Similarly, a turtle object is automatically created -whenever any of the functions derived from a Turtle method is called. + forward(200) -To use multiple turtles on a screen, the object-oriented interface must be -used. +The code above is equivalent to:: + begin_fill() + for i in range(4): + forward(100) + right(90) + end_fill() -Help and configuration -====================== + forward(200) + + +Use the ``turtle`` module namespace +----------------------------------- + +Using ``from turtle import *`` is convenient - but be warned that it imports a +rather large collection of objects, and if you're doing anything but turtle +graphics you run the risk of a name conflict (this becomes even more an issue +if you're using turtle graphics in a script where other modules might be +imported). + +The solution is to use ``import turtle`` - ``fd()`` becomes +``turtle.fd()``, ``width()`` becomes ``turtle.width()`` and so on. (If typing +"turtle" over and over again becomes tedious, use for example ``import turtle +as t`` instead.) + + +Use turtle graphics in a script +------------------------------- + +It's recommended to use the ``turtle`` module namespace as described +immediately above, for example:: + + import turtle as t + from random import random + + for i in range(100): + steps = int(random() * 100) + angle = int(random() * 360) + t.right(angle) + t.fd(steps) + +Another step is also required though - as soon as the script ends, Python +will also close the turtle's window. Add:: + + t.mainloop() + +to the end of the script. The script will now wait to be dismissed and +will not exit until it is terminated, for example by closing the turtle +graphics window. + + +Use object-oriented turtle graphics +----------------------------------- + +.. seealso:: :ref:`Explanation of the object-oriented interface ` + +Other than for very basic introductory purposes, or for trying things out +as quickly as possible, it's more usual and much more powerful to use the +object-oriented approach to turtle graphics. For example, this allows +multiple turtles on screen at once. + +In this approach, the various turtle commands are methods of objects (mostly of +``Turtle`` objects). You *can* use the object-oriented approach in the shell, +but it would be more typical in a Python script. + +The example above then becomes:: + + from turtle import Turtle + from random import random + + t = Turtle() + for i in range(100): + steps = int(random() * 100) + angle = int(random() * 360) + t.right(angle) + t.fd(steps) + + t.screen.mainloop() + +Note the last line. ``t.screen`` is an instance of the :class:`Screen` +that a Turtle instance exists on; it's created automatically along with +the turtle. + +The turtle's screen can be customised, for example:: + + t.screen.title('Object-oriented turtle demo') + t.screen.bgcolor("orange") + + +.. _help-and-configuration: How to use help --------------- @@ -2717,7 +2544,6 @@ At the time of this writing there are docstring dictionaries in German and in Italian. (Requests please to glingl@aon.at.) - How to configure Screen and Turtles ----------------------------------- @@ -2787,6 +2613,41 @@ study it as an example and see its effects when running the demos (preferably not from within the demo-viewer). +.. _turtle-explanation: + +Explanation +=========== + +A turtle object draws on a screen object, and there a number of key classes in +the turtle object-oriented interface that can be used to create them and relate +them to each other. + +A :class:`Turtle` instance will automatically create a :class:`Screen` +instance if one is not already present. + +``Turtle`` is a subclass of :class:`RawTurtle`, which *doesn't* automatically +create a drawing surface - a *canvas* will need to be provided or created for +it. The *canvas* can be a :class:`!tkinter.Canvas`, :class:`ScrolledCanvas` +or :class:`TurtleScreen`. + + +:class:`TurtleScreen` is the basic drawing surface for a +turtle. :class:`Screen` is a subclass of ``TurtleScreen``, and +includes :ref:`some additional methods ` for managing its +appearance (including size and title) and behaviour. ``TurtleScreen``'s +constructor needs a :class:`!tkinter.Canvas` or a +:class:`ScrolledCanvas` as an argument. + +The functional interface for turtle graphics uses the various methods of +``Turtle`` and ``TurtleScreen``/``Screen``. Behind the scenes, a screen +object is automatically created whenever a function derived from a ``Screen`` +method is called. Similarly, a turtle object is automatically created +whenever any of the functions derived from a Turtle method is called. + +To use multiple turtles on a screen, the object-oriented interface must be +used. + + :mod:`!turtledemo` --- Demo scripts ===================================