summaryrefslogtreecommitdiffstats
path: root/Demo/turtle
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2014-06-22 05:18:48 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2014-06-22 05:18:48 (GMT)
commit122df1eda4124aff480318763debc7ff9ab16a9d (patch)
tree35029fa2472c99c8eadb86893711c1eb2d65a388 /Demo/turtle
parent4575010943c7a6013fad39a9c31e07e3c498a3ce (diff)
downloadcpython-122df1eda4124aff480318763debc7ff9ab16a9d.zip
cpython-122df1eda4124aff480318763debc7ff9ab16a9d.tar.gz
cpython-122df1eda4124aff480318763debc7ff9ab16a9d.tar.bz2
Issue #21823: Catch turtle.Terminator exceptions in turtledemo.
Add note to demohelp.txt about doing so.
Diffstat (limited to 'Demo/turtle')
-rw-r--r--Demo/turtle/demohelp.txt16
-rwxr-xr-xDemo/turtle/tdemo_clock.py36
-rwxr-xr-xDemo/turtle/tdemo_minimal_hanoi.py10
3 files changed, 37 insertions, 25 deletions
diff --git a/Demo/turtle/demohelp.txt b/Demo/turtle/demohelp.txt
index d565691..9517493 100644
--- a/Demo/turtle/demohelp.txt
+++ b/Demo/turtle/demohelp.txt
@@ -65,11 +65,15 @@
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.)
+ 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!
+ 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/Demo/turtle/tdemo_clock.py b/Demo/turtle/tdemo_clock.py
index b6280bb..d4e0686 100755
--- a/Demo/turtle/tdemo_clock.py
+++ b/Demo/turtle/tdemo_clock.py
@@ -11,6 +11,7 @@ and time
------------------------------------
"""
from turtle import *
+from turtle import Terminator # not in __all__
from datetime import datetime
mode("logo")
@@ -102,22 +103,25 @@ def tick():
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/Demo/turtle/tdemo_minimal_hanoi.py b/Demo/turtle/tdemo_minimal_hanoi.py
index 8a1caa8..3cb9efc 100755
--- a/Demo/turtle/tdemo_minimal_hanoi.py
+++ b/Demo/turtle/tdemo_minimal_hanoi.py
@@ -18,6 +18,7 @@ stretched to rectangles by shapesize()
---------------------------------------
"""
from turtle import *
+from turtle import Terminator # not in __all__
class Disc(Turtle):
def __init__(self, n):
@@ -50,9 +51,12 @@ def hanoi(n, from_, with_, to_):
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