Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/lib/python3.8/turtledemo/clock.py @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 #!/usr/bin/env python3 | |
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 def jump(distanz, winkel=0): | |
17 penup() | |
18 right(winkel) | |
19 forward(distanz) | |
20 left(winkel) | |
21 pendown() | |
22 | |
23 def hand(laenge, spitze): | |
24 fd(laenge*1.15) | |
25 rt(90) | |
26 fd(spitze/2.0) | |
27 lt(120) | |
28 fd(spitze) | |
29 lt(120) | |
30 fd(spitze) | |
31 lt(120) | |
32 fd(spitze/2.0) | |
33 | |
34 def make_hand_shape(name, laenge, spitze): | |
35 reset() | |
36 jump(-laenge*0.15) | |
37 begin_poly() | |
38 hand(laenge, spitze) | |
39 end_poly() | |
40 hand_form = get_poly() | |
41 register_shape(name, hand_form) | |
42 | |
43 def clockface(radius): | |
44 reset() | |
45 pensize(7) | |
46 for i in range(60): | |
47 jump(radius) | |
48 if i % 5 == 0: | |
49 fd(25) | |
50 jump(-radius-25) | |
51 else: | |
52 dot(3) | |
53 jump(-radius) | |
54 rt(6) | |
55 | |
56 def setup(): | |
57 global second_hand, minute_hand, hour_hand, writer | |
58 mode("logo") | |
59 make_hand_shape("second_hand", 125, 25) | |
60 make_hand_shape("minute_hand", 130, 25) | |
61 make_hand_shape("hour_hand", 90, 25) | |
62 clockface(160) | |
63 second_hand = Turtle() | |
64 second_hand.shape("second_hand") | |
65 second_hand.color("gray20", "gray80") | |
66 minute_hand = Turtle() | |
67 minute_hand.shape("minute_hand") | |
68 minute_hand.color("blue1", "red1") | |
69 hour_hand = Turtle() | |
70 hour_hand.shape("hour_hand") | |
71 hour_hand.color("blue3", "red3") | |
72 for hand in second_hand, minute_hand, hour_hand: | |
73 hand.resizemode("user") | |
74 hand.shapesize(1, 1, 3) | |
75 hand.speed(0) | |
76 ht() | |
77 writer = Turtle() | |
78 #writer.mode("logo") | |
79 writer.ht() | |
80 writer.pu() | |
81 writer.bk(85) | |
82 | |
83 def wochentag(t): | |
84 wochentag = ["Monday", "Tuesday", "Wednesday", | |
85 "Thursday", "Friday", "Saturday", "Sunday"] | |
86 return wochentag[t.weekday()] | |
87 | |
88 def datum(z): | |
89 monat = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "June", | |
90 "July", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."] | |
91 j = z.year | |
92 m = monat[z.month - 1] | |
93 t = z.day | |
94 return "%s %d %d" % (m, t, j) | |
95 | |
96 def tick(): | |
97 t = datetime.today() | |
98 sekunde = t.second + t.microsecond*0.000001 | |
99 minute = t.minute + sekunde/60.0 | |
100 stunde = t.hour + minute/60.0 | |
101 try: | |
102 tracer(False) # Terminator can occur here | |
103 writer.clear() | |
104 writer.home() | |
105 writer.forward(65) | |
106 writer.write(wochentag(t), | |
107 align="center", font=("Courier", 14, "bold")) | |
108 writer.back(150) | |
109 writer.write(datum(t), | |
110 align="center", font=("Courier", 14, "bold")) | |
111 writer.forward(85) | |
112 tracer(True) | |
113 second_hand.setheading(6*sekunde) # or here | |
114 minute_hand.setheading(6*minute) | |
115 hour_hand.setheading(30*stunde) | |
116 tracer(True) | |
117 ontimer(tick, 100) | |
118 except Terminator: | |
119 pass # turtledemo user pressed STOP | |
120 | |
121 def main(): | |
122 tracer(False) | |
123 setup() | |
124 tracer(True) | |
125 tick() | |
126 return "EVENTLOOP" | |
127 | |
128 if __name__ == "__main__": | |
129 mode("logo") | |
130 msg = main() | |
131 print(msg) | |
132 mainloop() |