diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2014-06-22 05:18:48 (GMT) |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2014-06-22 05:18:48 (GMT) |
commit | 122df1eda4124aff480318763debc7ff9ab16a9d (patch) | |
tree | 35029fa2472c99c8eadb86893711c1eb2d65a388 /Demo/turtle | |
parent | 4575010943c7a6013fad39a9c31e07e3c498a3ce (diff) | |
download | cpython-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.txt | 16 | ||||
-rwxr-xr-x | Demo/turtle/tdemo_clock.py | 36 | ||||
-rwxr-xr-x | Demo/turtle/tdemo_minimal_hanoi.py | 10 |
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 |