[Python-checkins] cpython (merge 3.4 -> default): Merge with 3.4
terry.reedy
python-checkins at python.org
Sun Jun 22 07:21:17 CEST 2014
http://hg.python.org/cpython/rev/3f4abe3107ce
changeset: 91313:3f4abe3107ce
parent: 91310:b1c7f28f9c0a
parent: 91312:1ae2382417dc
user: Terry Jan Reedy <tjreedy at udel.edu>
date: Sun Jun 22 01:20:52 2014 -0400
summary:
Merge with 3.4
files:
Lib/turtledemo/clock.py | 36 +++++----
Lib/turtledemo/demohelp.txt | 74 +++++++++++++++++++++
Lib/turtledemo/minimal_hanoi.py | 10 +-
3 files changed, 101 insertions(+), 19 deletions(-)
diff --git a/Lib/turtledemo/clock.py b/Lib/turtledemo/clock.py
--- a/Lib/turtledemo/clock.py
+++ b/Lib/turtledemo/clock.py
@@ -11,6 +11,7 @@
------------------------------------
"""
from turtle import *
+from turtle import Terminator # not in __all__
from datetime import datetime
mode("logo")
@@ -102,22 +103,25 @@
sekunde = t.second + t.microsecond*0.000001
minute = t.minute + sekunde/60.0
stunde = t.hour + minute/60.0
- tracer(False)
- writer.clear()
- writer.home()
- writer.forward(65)
- writer.write(wochentag(t),
- align="center", font=("Courier", 14, "bold"))
- writer.back(150)
- writer.write(datum(t),
- align="center", font=("Courier", 14, "bold"))
- writer.forward(85)
- tracer(True)
- second_hand.setheading(6*sekunde)
- minute_hand.setheading(6*minute)
- hour_hand.setheading(30*stunde)
- tracer(True)
- ontimer(tick, 100)
+ try:
+ tracer(False) # Terminator can occur here
+ writer.clear()
+ writer.home()
+ writer.forward(65)
+ writer.write(wochentag(t),
+ align="center", font=("Courier", 14, "bold"))
+ writer.back(150)
+ writer.write(datum(t),
+ align="center", font=("Courier", 14, "bold"))
+ writer.forward(85)
+ tracer(True)
+ second_hand.setheading(6*sekunde) # or here
+ minute_hand.setheading(6*minute)
+ hour_hand.setheading(30*stunde)
+ tracer(True)
+ ontimer(tick, 100)
+ except Terminator:
+ pass # turtledemo user pressed STOP
def main():
tracer(False)
diff --git a/Lib/turtledemo/demohelp.txt b/Lib/turtledemo/demohelp.txt
new file mode 100644
--- /dev/null
+++ b/Lib/turtledemo/demohelp.txt
@@ -0,0 +1,74 @@
+
+
+ ----------------------------------------------
+
+ 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.)
+
+ 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.)
+
diff --git a/Lib/turtledemo/minimal_hanoi.py b/Lib/turtledemo/minimal_hanoi.py
--- a/Lib/turtledemo/minimal_hanoi.py
+++ b/Lib/turtledemo/minimal_hanoi.py
@@ -18,6 +18,7 @@
---------------------------------------
"""
from turtle import *
+from turtle import Terminator # not in __all__
class Disc(Turtle):
def __init__(self, n):
@@ -50,9 +51,12 @@
def play():
onkey(None,"space")
clear()
- hanoi(6, t1, t2, t3)
- write("press STOP button to exit",
- align="center", font=("Courier", 16, "bold"))
+ try:
+ hanoi(6, t1, t2, t3)
+ write("press STOP button to exit",
+ align="center", font=("Courier", 16, "bold"))
+ except Terminator:
+ pass # turtledemo user pressed STOP
def main():
global t1, t2, t3
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list