mirror of
https://github.com/python/cpython.git
synced 2025-10-10 08:53:14 +00:00
Issue #10291: Cleanup turtledemo to use docstrings for help.
(Original patch by Alexander Belopolsky, refreshed by Jessica McKellar.)
This commit is contained in:
parent
5e526bba59
commit
3ff96eb1e4
5 changed files with 87 additions and 166 deletions
|
@ -0,0 +1,14 @@
|
||||||
|
"""
|
||||||
|
--------------------------------------
|
||||||
|
About this viewer
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Tiny demo viewer to view turtle graphics example scripts.
|
||||||
|
|
||||||
|
Quickly and dirtyly assembled by Gregor Lingl.
|
||||||
|
June, 2006
|
||||||
|
|
||||||
|
For more information see: turtledemo - Help
|
||||||
|
|
||||||
|
Have fun!
|
||||||
|
"""
|
|
@ -1,12 +1,81 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
"""
|
||||||
|
----------------------------------------------
|
||||||
|
|
||||||
|
turtledemo - Help
|
||||||
|
|
||||||
|
----------------------------------------------
|
||||||
|
|
||||||
|
This document has two sections:
|
||||||
|
|
||||||
|
(1) How to use the demo viewer
|
||||||
|
(2) How to add your own demos to the demo repository
|
||||||
|
|
||||||
|
|
||||||
|
(1) How to use the demo viewer.
|
||||||
|
|
||||||
|
Select a demoscript from the example menu.
|
||||||
|
The (syntax coloured) source code appears in the left
|
||||||
|
source code window. IT CANNOT BE EDITED, but ONLY VIEWED!
|
||||||
|
|
||||||
|
- Press START button to start the demo.
|
||||||
|
- Stop execution by pressing the STOP button.
|
||||||
|
- Clear screen by pressing the CLEAR button.
|
||||||
|
- Restart by pressing the START button again.
|
||||||
|
|
||||||
|
SPECIAL demos are those which run EVENTDRIVEN.
|
||||||
|
(For example clock.py - or oldTurtleDemo.py which
|
||||||
|
in the end expects a mouse click.):
|
||||||
|
|
||||||
|
Press START button to start the demo.
|
||||||
|
|
||||||
|
- Until the EVENTLOOP is entered everything works
|
||||||
|
as in an ordinary demo script.
|
||||||
|
|
||||||
|
- When the EVENTLOOP is entered, you control the
|
||||||
|
application by using the mouse and/or keys (or it's
|
||||||
|
controlled by some timer events)
|
||||||
|
To stop it you can and must press the STOP button.
|
||||||
|
|
||||||
|
While the EVENTLOOP is running, the examples menu is disabled.
|
||||||
|
|
||||||
|
- Only after having pressed the STOP button, you may
|
||||||
|
restart it or choose another example script.
|
||||||
|
|
||||||
|
* * * * * * * *
|
||||||
|
In some rare situations there may occur interferences/conflicts
|
||||||
|
between events concerning the demo script and those concerning the
|
||||||
|
demo-viewer. (They run in the same process.) Strange behaviour may be
|
||||||
|
the consequence and in the worst case you must close and restart the
|
||||||
|
viewer.
|
||||||
|
* * * * * * * *
|
||||||
|
|
||||||
|
|
||||||
|
(2) How to add your own demos to the demo repository
|
||||||
|
|
||||||
|
- place: same directory as turtledemo/__main__.py
|
||||||
|
|
||||||
|
- requirements on source code:
|
||||||
|
code must contain a main() function which will
|
||||||
|
be executed by the viewer (see provided example scripts)
|
||||||
|
main() may return a string which will be displayed
|
||||||
|
in the Label below the source code window (when execution
|
||||||
|
has finished.)
|
||||||
|
|
||||||
|
!! For programs, which are EVENT DRIVEN, main must return
|
||||||
|
!! the string "EVENTLOOP". This informs the viewer, that the
|
||||||
|
!! script is still running and must be stopped by the user!
|
||||||
|
"""
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
from idlelib.Percolator import Percolator
|
from idlelib.Percolator import Percolator
|
||||||
from idlelib.ColorDelegator import ColorDelegator
|
from idlelib.ColorDelegator import ColorDelegator
|
||||||
from idlelib.textView import view_file # TextViewer
|
from idlelib.textView import view_text # TextViewer
|
||||||
from importlib import reload
|
from importlib import reload
|
||||||
|
from turtledemo import __doc__ as about_turtledemo
|
||||||
|
|
||||||
import turtle
|
import turtle
|
||||||
import time
|
import time
|
||||||
|
@ -28,16 +97,13 @@ def getExampleEntries():
|
||||||
entry.endswith(".py") and entry[0] != '_']
|
entry.endswith(".py") and entry[0] != '_']
|
||||||
|
|
||||||
def showDemoHelp():
|
def showDemoHelp():
|
||||||
view_file(demo.root, "Help on turtleDemo",
|
view_text(demo.root, "Help on turtledemo", __doc__)
|
||||||
os.path.join(demo_dir, "demohelp.txt"))
|
|
||||||
|
|
||||||
def showAboutDemo():
|
def showAboutDemo():
|
||||||
view_file(demo.root, "About turtleDemo",
|
view_text(demo.root, "About turtledemo", about_turtledemo)
|
||||||
os.path.join(demo_dir, "about_turtledemo.txt"))
|
|
||||||
|
|
||||||
def showAboutTurtle():
|
def showAboutTurtle():
|
||||||
view_file(demo.root, "About the new turtle module.",
|
view_text(demo.root, "About the turtle module.", turtle.__doc__)
|
||||||
os.path.join(demo_dir, "about_turtle.txt"))
|
|
||||||
|
|
||||||
class DemoWindow(object):
|
class DemoWindow(object):
|
||||||
|
|
||||||
|
|
|
@ -1,76 +0,0 @@
|
||||||
|
|
||||||
========================================================
|
|
||||||
A new turtle module for Python
|
|
||||||
========================================================
|
|
||||||
|
|
||||||
Turtle graphics is a popular way for introducing programming to
|
|
||||||
kids. It was part of the original Logo programming language developed
|
|
||||||
by Wally Feurzig and Seymour Papert in 1966.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
By combining together these and similar commands, intricate shapes and
|
|
||||||
pictures can easily be drawn.
|
|
||||||
|
|
||||||
----- turtle.py
|
|
||||||
|
|
||||||
This module is an extended reimplementation of turtle.py from the
|
|
||||||
Python standard distribution up to Python 2.5. (See: http:\\www.python.org)
|
|
||||||
|
|
||||||
It tries to keep the merits of turtle.py and to be (nearly) 100%
|
|
||||||
compatible with it. This means in the first place to enable the
|
|
||||||
learning programmer to use all the commands, classes and methods
|
|
||||||
interactively when using the module from within IDLE run with
|
|
||||||
the -n switch.
|
|
||||||
|
|
||||||
Roughly it has the following features added:
|
|
||||||
|
|
||||||
- Better animation of the turtle movements, especially of turning the
|
|
||||||
turtle. So the turtles can more easily be used as a visual feedback
|
|
||||||
instrument by the (beginning) programmer.
|
|
||||||
|
|
||||||
- Different turtle shapes, gif-images as turtle shapes, user defined
|
|
||||||
and user controllable turtle shapes, among them compound
|
|
||||||
(multicolored) shapes. Turtle shapes can be stgretched and tilted, which
|
|
||||||
makes turtles zu very versatile geometrical objects.
|
|
||||||
|
|
||||||
- Fine control over turtle movement and screen updates via delay(),
|
|
||||||
and enhanced tracer() and speed() methods.
|
|
||||||
|
|
||||||
- Aliases for the most commonly used commands, like fd for forward etc.,
|
|
||||||
following the early Logo traditions. This reduces the boring work of
|
|
||||||
typing long sequences of commands, which often occur in a natural way
|
|
||||||
when kids try to program fancy pictures on their first encounter with
|
|
||||||
turtle graphcis.
|
|
||||||
|
|
||||||
- Turtles now have an undo()-method with configurable undo-buffer.
|
|
||||||
|
|
||||||
- Some simple commands/methods for creating event driven programs
|
|
||||||
(mouse-, key-, timer-events). Especially useful for programming games.
|
|
||||||
|
|
||||||
- A scrollable Canvas class. The default scrollable Canvas can be
|
|
||||||
extended interactively as needed while playing around with the turtle(s).
|
|
||||||
|
|
||||||
- A TurtleScreen class with methods controlling background color or
|
|
||||||
background image, window and canvas size and other properties of the
|
|
||||||
TurtleScreen.
|
|
||||||
|
|
||||||
- There is a method, setworldcoordinates(), to install a user defined
|
|
||||||
coordinate-system for the TurtleScreen.
|
|
||||||
|
|
||||||
- The implementation uses a 2-vector class named Vec2D, derived from tuple.
|
|
||||||
This class is public, so it can be imported by the application programmer,
|
|
||||||
which makes certain types of computations very natural and compact.
|
|
||||||
|
|
||||||
- Appearance of the TurtleScreen and the Turtles at startup/import can be
|
|
||||||
configured by means of a turtle.cfg configuration file.
|
|
||||||
The default configuration mimics the appearance of the old turtle module.
|
|
||||||
|
|
||||||
- If configured appropriately the module reads in docstrings from a docstring
|
|
||||||
dictionary in some different language, supplied separately and replaces
|
|
||||||
the english ones by those read in. There is a utility function
|
|
||||||
write_docstringdict() to write a dictionary with the original (english)
|
|
||||||
docstrings to disc, so it can serve as a template for translations.
|
|
|
@ -1,13 +0,0 @@
|
||||||
|
|
||||||
--------------------------------------
|
|
||||||
About this viewer
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
Tiny demo viewer to view turtle graphics example scripts.
|
|
||||||
|
|
||||||
Quickly and dirtyly assembled by Gregor Lingl.
|
|
||||||
June, 2006
|
|
||||||
|
|
||||||
For more information see: turtleDemo - Help
|
|
||||||
|
|
||||||
Have fun!
|
|
|
@ -1,70 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------
|
|
||||||
|
|
||||||
turtleDemo - Help
|
|
||||||
|
|
||||||
----------------------------------------------
|
|
||||||
|
|
||||||
This document has two sections:
|
|
||||||
|
|
||||||
(1) How to use the demo viewer
|
|
||||||
(2) How to add your own demos to the demo repository
|
|
||||||
|
|
||||||
|
|
||||||
(1) How to use the demo viewer.
|
|
||||||
|
|
||||||
Select a demoscript from the example menu.
|
|
||||||
The (syntax coloured) source code appears in the left
|
|
||||||
source code window. IT CANNOT BE EDITED, but ONLY VIEWED!
|
|
||||||
|
|
||||||
- Press START button to start the demo.
|
|
||||||
- Stop execution by pressing the STOP button.
|
|
||||||
- Clear screen by pressing the CLEAR button.
|
|
||||||
- Restart by pressing the START button again.
|
|
||||||
|
|
||||||
SPECIAL demos are those which run EVENTDRIVEN.
|
|
||||||
(For example clock.py - or oldTurtleDemo.py which
|
|
||||||
in the end expects a mouse click.):
|
|
||||||
|
|
||||||
Press START button to start the demo.
|
|
||||||
|
|
||||||
- Until the EVENTLOOP is entered everything works
|
|
||||||
as in an ordinary demo script.
|
|
||||||
|
|
||||||
- When the EVENTLOOP is entered, you control the
|
|
||||||
application by using the mouse and/or keys (or it's
|
|
||||||
controlled by some timer events)
|
|
||||||
To stop it you can and must press the STOP button.
|
|
||||||
|
|
||||||
While the EVENTLOOP is running, the examples menu is disabled.
|
|
||||||
|
|
||||||
- Only after having pressed the STOP button, you may
|
|
||||||
restart it or choose another example script.
|
|
||||||
|
|
||||||
* * * * * * * *
|
|
||||||
In some rare situations there may occur interferences/conflicts
|
|
||||||
between events concerning the demo script and those concerning the
|
|
||||||
demo-viewer. (They run in the same process.) Strange behaviour may be
|
|
||||||
the consequence and in the worst case you must close and restart the
|
|
||||||
viewer.
|
|
||||||
* * * * * * * *
|
|
||||||
|
|
||||||
|
|
||||||
(2) How to add your own demos to the demo repository
|
|
||||||
|
|
||||||
- place: same directory as turtledemo/__main__.py
|
|
||||||
|
|
||||||
- requirements on source code:
|
|
||||||
code must contain a main() function which will
|
|
||||||
be executed by the viewer (see provided example scripts)
|
|
||||||
main() may return a string which will be displayed
|
|
||||||
in the Label below the source code window (when execution
|
|
||||||
has finished.)
|
|
||||||
|
|
||||||
!! For programs, which are EVENT DRIVEN, main must return
|
|
||||||
!! the string "EVENTLOOP". This informs the viewer, that the
|
|
||||||
!! script is still running and must be stopped by the user!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue