Merge with 3.4

This commit is contained in:
Terry Jan Reedy 2014-06-24 22:21:56 -04:00
commit 5827da3f9f
7 changed files with 60 additions and 48 deletions

View File

@ -53,22 +53,28 @@
(2) How to add your own demos to the demo repository (2) How to add your own demos to the demo repository
- place: same directory as turtledemo/__main__.py - Place the file in the same directory as turtledemo/__main__.py
- requirements on source code: - The code must contain a main() function which will
code must contain a main() function which will be executed by the viewer (see provided example scripts).
be executed by the viewer (see provided example scripts) It may return a string which will be displayed in the Label below
main() may return a string which will be displayed the source code window (when execution has finished.)
in the Label below the source code window (when execution
has finished.)
If the demo is EVENT DRIVEN, main must return the string - In order to run mydemo.py by itself, such as during development,
"EVENTLOOP". This informs the demo viewer that the script is add the following at the end of the file:
still running and must be stopped by the user!
If an "EVENTLOOP" demo runs by itself, as with clock, which uses if __name__ == '__main__':
ontimer, or minimal_hanoi, which loops by recursion, then the main()
code should catch the turtle.Terminator exception that will be mainloop() # keep window
raised when the user presses the STOP button. (Paint is not such
a demo; it only acts in response to mouse clicks and movements.)
python -m turtledemo.mydemo # will then run it
- If the demo is EVENT DRIVEN, main must return the string
"EVENTLOOP". This informs the demo viewer that the script is
still running and must be stopped by the user!
If an "EVENTLOOP" demo runs by itself, as with clock, which uses
ontimer, or minimal_hanoi, which loops by recursion, then the
code should catch the turtle.Terminator exception that will be
raised when the user presses the STOP button. (Paint is not such
a demo; it only acts in response to mouse clicks and movements.)

View File

@ -3,12 +3,12 @@
tdemo_forest.py tdemo_forest.py
Displays a 'forest' of 3 'breadth-first-trees' Displays a 'forest' of 3 breadth-first-trees
similar to the one from example tree. similar to the one in tree.
For further remarks see xtx_tree.py For further remarks see tree.py
This example is a 'breadth-first'-rewrite of This example is a 'breadth-first'-rewrite of
a Logo program written by Erich Neuwirth. See: a Logo program written by Erich Neuwirth. See
http://homepage.univie.ac.at/erich.neuwirth/ http://homepage.univie.ac.at/erich.neuwirth/
""" """
from turtle import Turtle, colormode, tracer, mainloop from turtle import Turtle, colormode, tracer, mainloop
@ -104,6 +104,5 @@ def main():
return "runtime: %.2f sec." % (b-a) return "runtime: %.2f sec." % (b-a)
if __name__ == '__main__': if __name__ == '__main__':
msg = main() main()
print(msg)
mainloop() mainloop()

View File

@ -3,11 +3,15 @@
tdemo_paint.py tdemo_paint.py
A simple eventdriven paint program A simple event-driven paint program
- use left mouse button to move turtle - left mouse button moves turtle
- middle mouse button to change color - middle mouse button changes color
- right mouse button do turn filling on/off - right mouse button toogles betweem pen up
(no line drawn when the turtle moves) and
pen down (line is drawn). If pen up follows
at least two pen-down moves, the polygon that
includes the starting point is filled.
------------------------------------------- -------------------------------------------
Play around by clicking into the canvas Play around by clicking into the canvas
using all three mouse buttons. using all three mouse buttons.

View File

@ -3,14 +3,10 @@
tdemo_peace.py tdemo_peace.py
A very simple drawing suitable as a beginner's A simple drawing suitable as a beginner's
programming example. programming example. Aside from the
peacecolors assignment and the for loop,
Uses only commands, which are also available in it only uses turtle commands.
old turtle.py.
Intentionally no variables are used except for the
colorloop:
""" """
from turtle import * from turtle import *
@ -21,7 +17,7 @@ def main():
"royalblue1", "dodgerblue4") "royalblue1", "dodgerblue4")
reset() reset()
s = Screen() Screen()
up() up()
goto(-320,-195) goto(-320,-195)
width(70) width(70)
@ -58,7 +54,7 @@ def main():
up() up()
goto(0,300) # vanish if hideturtle() is not available ;-) goto(0,300) # vanish if hideturtle() is not available ;-)
return "Done!!" return "Done!"
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -12,9 +12,9 @@ very light moon!
Planet has a circular orbit, moon a stable Planet has a circular orbit, moon a stable
orbit around the planet. orbit around the planet.
You can hold the movement temporarily by pressing You can hold the movement temporarily by
the left mouse button with mouse over the pressing the left mouse button with the
scrollbar of the canvas. mouse over the scrollbar of the canvas.
""" """
from turtle import Shape, Turtle, mainloop, Vec2D as Vec from turtle import Shape, Turtle, mainloop, Vec2D as Vec
@ -108,6 +108,5 @@ def main():
return "Done!" return "Done!"
if __name__ == '__main__': if __name__ == '__main__':
msg = main() main()
print(msg) mainloop()
#mainloop()

View File

@ -11,9 +11,9 @@ Uses:
(1) a tree-generator, where the drawing is (1) a tree-generator, where the drawing is
quasi the side-effect, whereas the generator quasi the side-effect, whereas the generator
always yields None. always yields None.
(2) Turtle-cloning: At each branching point the (2) Turtle-cloning: At each branching point
current pen is cloned. So in the end there the current pen is cloned. So in the end
are 1024 turtles. there are 1024 turtles.
""" """
from turtle import Turtle, mainloop from turtle import Turtle, mainloop
from time import clock from time import clock

View File

@ -1,8 +1,16 @@
#!/usr/bin/env python3 """turtledemo.two_canvases
## DEMONSTRATES USE OF 2 CANVASES, SO CANNOT BE RUN IN DEMOVIEWER!
"""turtle example: Using TurtleScreen and RawTurtle Use TurtleScreen and RawTurtle to draw on two
for drawing on two distinct canvases. distinct canvases.
""" """
#The final mainloop only serves to keep the window open.
#TODO: This runs in its own two-canvas window when selected in the
#demoviewer examples menu but the text is not loaded and the previous
#example is left visible. If the ending mainloop is removed, the text
#Eis loaded, this run again in a third window, and if start is pressed,
#demoviewer raises an error because main is not found, and then freezes.
from turtle import TurtleScreen, RawTurtle, TK from turtle import TurtleScreen, RawTurtle, TK
root = TK.Tk() root = TK.Tk()