123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- #!/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()
|