Spaces:
Running
Running
#!/usr/bin/env python3 | |
# -*- coding: cp1252 -*- | |
""" turtle-example-suite: | |
tdemo_clock.py | |
Enhanced clock-program, showing date | |
and time | |
------------------------------------ | |
Press STOP to exit the program! | |
------------------------------------ | |
""" | |
from turtle import * | |
from datetime import datetime | |
def jump(distanz, winkel=0): | |
penup() | |
right(winkel) | |
forward(distanz) | |
left(winkel) | |
pendown() | |
def hand(laenge, spitze): | |
fd(laenge*1.15) | |
rt(90) | |
fd(spitze/2.0) | |
lt(120) | |
fd(spitze) | |
lt(120) | |
fd(spitze) | |
lt(120) | |
fd(spitze/2.0) | |
def make_hand_shape(name, laenge, spitze): | |
reset() | |
jump(-laenge*0.15) | |
begin_poly() | |
hand(laenge, spitze) | |
end_poly() | |
hand_form = get_poly() | |
register_shape(name, hand_form) | |
def clockface(radius): | |
reset() | |
pensize(7) | |
for i in range(60): | |
jump(radius) | |
if i % 5 == 0: | |
fd(25) | |
jump(-radius-25) | |
else: | |
dot(3) | |
jump(-radius) | |
rt(6) | |
def setup(): | |
global second_hand, minute_hand, hour_hand, writer | |
mode("logo") | |
make_hand_shape("second_hand", 125, 25) | |
make_hand_shape("minute_hand", 130, 25) | |
make_hand_shape("hour_hand", 90, 25) | |
clockface(160) | |
second_hand = Turtle() | |
second_hand.shape("second_hand") | |
second_hand.color("gray20", "gray80") | |
minute_hand = Turtle() | |
minute_hand.shape("minute_hand") | |
minute_hand.color("blue1", "red1") | |
hour_hand = Turtle() | |
hour_hand.shape("hour_hand") | |
hour_hand.color("blue3", "red3") | |
for hand in second_hand, minute_hand, hour_hand: | |
hand.resizemode("user") | |
hand.shapesize(1, 1, 3) | |
hand.speed(0) | |
ht() | |
writer = Turtle() | |
#writer.mode("logo") | |
writer.ht() | |
writer.pu() | |
writer.bk(85) | |
def wochentag(t): | |
wochentag = ["Monday", "Tuesday", "Wednesday", | |
"Thursday", "Friday", "Saturday", "Sunday"] | |
return wochentag[t.weekday()] | |
def datum(z): | |
monat = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "June", | |
"July", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."] | |
j = z.year | |
m = monat[z.month - 1] | |
t = z.day | |
return "%s %d %d" % (m, t, j) | |
def tick(): | |
t = datetime.today() | |
sekunde = t.second + t.microsecond*0.000001 | |
minute = t.minute + sekunde/60.0 | |
stunde = t.hour + minute/60.0 | |
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) | |
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) | |
setup() | |
tracer(True) | |
tick() | |
return "EVENTLOOP" | |
if __name__ == "__main__": | |
mode("logo") | |
msg = main() | |
print(msg) | |
mainloop() | |