~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Demo/turtle/tdemo_clock.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
ImportĀ upstreamĀ versionĀ 2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
# -*- coding: cp1252 -*-
 
3
"""       turtle-example-suite:
 
4
 
 
5
             tdemo_clock.py
 
6
 
 
7
Enhanced clock-program, showing date
 
8
and time
 
9
  ------------------------------------
 
10
   Press STOP to exit the program!
 
11
  ------------------------------------
 
12
"""
 
13
from turtle import *
 
14
from datetime import datetime
 
15
 
 
16
mode("logo")
 
17
 
 
18
def jump(distanz, winkel=0):
 
19
    penup()
 
20
    right(winkel)
 
21
    forward(distanz)
 
22
    left(winkel)
 
23
    pendown()
 
24
 
 
25
def hand(laenge, spitze):
 
26
    fd(laenge*1.15)
 
27
    rt(90)
 
28
    fd(spitze/2.0)
 
29
    lt(120)
 
30
    fd(spitze)
 
31
    lt(120)
 
32
    fd(spitze)
 
33
    lt(120)
 
34
    fd(spitze/2.0)
 
35
 
 
36
def make_hand_shape(name, laenge, spitze):
 
37
    reset()
 
38
    jump(-laenge*0.15)
 
39
    begin_poly()
 
40
    hand(laenge, spitze)
 
41
    end_poly()
 
42
    hand_form = get_poly()
 
43
    register_shape(name, hand_form)
 
44
 
 
45
 
 
46
def clockface(radius):
 
47
    reset()
 
48
    pensize(7)
 
49
    for i in range(60):
 
50
        jump(radius)
 
51
        if i % 5 == 0:
 
52
            fd(25)
 
53
            jump(-radius-25)
 
54
        else:
 
55
            dot(3)
 
56
            jump(-radius)
 
57
        rt(6)
 
58
 
 
59
def setup():
 
60
    global second_hand, minute_hand, hour_hand, writer
 
61
    mode("logo")
 
62
    make_hand_shape("second_hand", 125, 25)
 
63
    make_hand_shape("minute_hand",  130, 25)
 
64
    make_hand_shape("hour_hand", 90, 25)
 
65
    clockface(160)
 
66
    second_hand = Turtle()
 
67
    second_hand.shape("second_hand")
 
68
    second_hand.color("gray20", "gray80")
 
69
    minute_hand = Turtle()
 
70
    minute_hand.shape("minute_hand")
 
71
    minute_hand.color("blue1", "red1")
 
72
    hour_hand = Turtle()
 
73
    hour_hand.shape("hour_hand")
 
74
    hour_hand.color("blue3", "red3")
 
75
    for hand in second_hand, minute_hand, hour_hand:
 
76
        hand.resizemode("user")
 
77
        hand.shapesize(1, 1, 3)
 
78
        hand.speed(0)
 
79
    ht()
 
80
    writer = Turtle()
 
81
    #writer.mode("logo")
 
82
    writer.ht()
 
83
    writer.pu()
 
84
    writer.bk(85)
 
85
 
 
86
 
 
87
def wochentag(t):
 
88
    wochentag = ["Monday", "Tuesday", "Wednesday",
 
89
        "Thursday", "Friday", "Saturday", "Sunday"]
 
90
    return wochentag[t.weekday()]
 
91
 
 
92
def datum(z):
 
93
    monat = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "June",
 
94
             "July", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."]
 
95
    j = z.year
 
96
    m = monat[z.month - 1]
 
97
    t = z.day
 
98
    return "%s %d %d" % (m, t, j)
 
99
 
 
100
def tick():
 
101
    t = datetime.today()
 
102
    sekunde = t.second + t.microsecond*0.000001
 
103
    minute = t.minute + sekunde/60.0
 
104
    stunde = t.hour + minute/60.0
 
105
    tracer(False)
 
106
    writer.clear()
 
107
    writer.home()
 
108
    writer.forward(65)
 
109
    writer.write(wochentag(t),
 
110
                 align="center", font=("Courier", 14, "bold"))
 
111
    writer.back(150)
 
112
    writer.write(datum(t),
 
113
                 align="center", font=("Courier", 14, "bold"))
 
114
    writer.forward(85)
 
115
    tracer(True)
 
116
    second_hand.setheading(6*sekunde)
 
117
    minute_hand.setheading(6*minute)
 
118
    hour_hand.setheading(30*stunde)
 
119
    tracer(True)
 
120
    ontimer(tick, 100)
 
121
 
 
122
def main():
 
123
    tracer(False)
 
124
    setup()
 
125
    tracer(True)
 
126
    tick()
 
127
    return "EVENTLOOP"
 
128
 
 
129
if __name__ == "__main__":
 
130
    msg = main()
 
131
    print msg
 
132
    mainloop()