mirror of https://github.com/python/cpython
Merge with 3.4
This commit is contained in:
commit
29ed8eec68
|
@ -11,6 +11,7 @@ and time
|
||||||
------------------------------------
|
------------------------------------
|
||||||
"""
|
"""
|
||||||
from turtle import *
|
from turtle import *
|
||||||
|
from turtle import Terminator # not in __all__
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
mode("logo")
|
mode("logo")
|
||||||
|
@ -102,7 +103,8 @@ def tick():
|
||||||
sekunde = t.second + t.microsecond*0.000001
|
sekunde = t.second + t.microsecond*0.000001
|
||||||
minute = t.minute + sekunde/60.0
|
minute = t.minute + sekunde/60.0
|
||||||
stunde = t.hour + minute/60.0
|
stunde = t.hour + minute/60.0
|
||||||
tracer(False)
|
try:
|
||||||
|
tracer(False) # Terminator can occur here
|
||||||
writer.clear()
|
writer.clear()
|
||||||
writer.home()
|
writer.home()
|
||||||
writer.forward(65)
|
writer.forward(65)
|
||||||
|
@ -113,11 +115,13 @@ def tick():
|
||||||
align="center", font=("Courier", 14, "bold"))
|
align="center", font=("Courier", 14, "bold"))
|
||||||
writer.forward(85)
|
writer.forward(85)
|
||||||
tracer(True)
|
tracer(True)
|
||||||
second_hand.setheading(6*sekunde)
|
second_hand.setheading(6*sekunde) # or here
|
||||||
minute_hand.setheading(6*minute)
|
minute_hand.setheading(6*minute)
|
||||||
hour_hand.setheading(30*stunde)
|
hour_hand.setheading(30*stunde)
|
||||||
tracer(True)
|
tracer(True)
|
||||||
ontimer(tick, 100)
|
ontimer(tick, 100)
|
||||||
|
except Terminator:
|
||||||
|
pass # turtledemo user pressed STOP
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
tracer(False)
|
tracer(False)
|
||||||
|
|
|
@ -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.)
|
||||||
|
|
|
@ -18,6 +18,7 @@ stretched to rectangles by shapesize()
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
"""
|
"""
|
||||||
from turtle import *
|
from turtle import *
|
||||||
|
from turtle import Terminator # not in __all__
|
||||||
|
|
||||||
class Disc(Turtle):
|
class Disc(Turtle):
|
||||||
def __init__(self, n):
|
def __init__(self, n):
|
||||||
|
@ -50,9 +51,12 @@ def hanoi(n, from_, with_, to_):
|
||||||
def play():
|
def play():
|
||||||
onkey(None,"space")
|
onkey(None,"space")
|
||||||
clear()
|
clear()
|
||||||
|
try:
|
||||||
hanoi(6, t1, t2, t3)
|
hanoi(6, t1, t2, t3)
|
||||||
write("press STOP button to exit",
|
write("press STOP button to exit",
|
||||||
align="center", font=("Courier", 16, "bold"))
|
align="center", font=("Courier", 16, "bold"))
|
||||||
|
except Terminator:
|
||||||
|
pass # turtledemo user pressed STOP
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
global t1, t2, t3
|
global t1, t2, t3
|
||||||
|
|
Loading…
Reference in New Issue