uhr_final

# -*- coding: utf-8 -*-
 
# Python für Kids -- 4. Auflage, Kapitel 13
 
# Autor: Gregor Lingl
 
# Datum 18. 8. 2009
 
# uhr_arbeit.py  
 
 
 
from turtle import *
 
from mytools import jump
 
from datetime import datetime
 
 
 
def zeiger(laenge, spitze):
 
    fd(laenge)
 
    rt(90)
 
    fd(spitze/2)
 
    lt(120)
 
    fd(spitze)
 
    lt(120)
 
    fd(spitze)
 
    lt(120)
 
    fd(spitze/2)
 
 
 
def mache_zeiger_shape(name, laenge, spitze):
 
    reset()
 
    begin_poly()
 
    zeiger(laenge, spitze)
 
    end_poly()
 
    zeiger_form = get_poly()
 
    screen.register_shape(name, zeiger_form)
 
 
 
def ziffernblatt(radius):
 
    reset()
 
    pensize(7)
 
    for i in range(12):
 
        jump(radius)
 
        fd(25)
 
        jump(-radius-25)
 
        rt(30)
 
    hideturtle()
 
 
 
def wochentag(t):
 
    wochentag = ["Montag", "Dienstag", "Mittwoch",
 
        "Donnerstag", "Freitag", "Samstag", "Sonntag"]
 
    return wochentag[t.weekday()]
 
 
 
def datum(z):
 
    monat = ["Jan.", "Feb.", "März.", "April", "Mai", "Juni",
 
             "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez."]
 
    j = z.year
 
    m = monat[z.month - 1]
 
    t = z.day
 
    return "{0} {1} {2}".format(m, t, j)
 
 
 
def tick():
 
    jetzt = datetime.now()
 
    sekunden=jetzt.second + jetzt.microsecond * 0.000001
 
    minuten = jetzt.minute + sekunden/60
 
    stunden = jetzt.hour + minuten/60
 
    screen.tracer(False)
 
    writer.clear()
 
    writer.home()
 
    writer.forward(65)
 
    writer.write(wochentag(jetzt),
 
                 align="center", font=("Courier", 14, "bold"))
 
    writer.back(155)
 
    writer.write(datum(jetzt),
 
                 align="center", font=("Courier", 14, "bold"))      
 
    sekundenzeiger.setheading(-6*sekunden+180)     # 360/60
 
    minutenzeiger.setheading(-6*minuten+180)
 
    stundenzeiger.setheading(-30*stunden+180)
 
    screen.tracer(True)
 
    screen.ontimer(tick, 200)
 
 
 
def uhr():
 
    global sekundenzeiger, minutenzeiger, stundenzeiger, writer
 
    screen.setup(400, 400)
 
    screen.clear()
 
    screen.title("Python Turtle-Grafik: Die Uhr")
 
    screen.tracer(False)
 
    shape("turtle")
 
    mache_zeiger_shape("sekundenzeiger", 120, 25)
 
    mache_zeiger_shape("minutenzeiger", 130, 25)
 
    mache_zeiger_shape("stundenzeiger", 90, 25)
 
    ziffernblatt(160)
 
    sekundenzeiger = Turtle(shape="sekundenzeiger") # Schlüsselwortargument!
 
    sekundenzeiger.color("gray20", "gray80")
 
    minutenzeiger = Turtle(shape="minutenzeiger")
 
    minutenzeiger.color("blue1", "red1")
 
    stundenzeiger = Turtle(shape="stundenzeiger")
 
    stundenzeiger.color("blue3", "red3")
 
    for zeiger in sekundenzeiger, minutenzeiger, stundenzeiger:
 
        zeiger.shapesize(1, 1, 3)
 
        zeiger.speed(0)
 
    writer = Turtle(visible=False)
 
    writer.penup()
 
    screen.tracer(True)
 
    tick()
 
 
 
if __name__ == "__main__":
 
    screen = Screen()    
 
    uhr()
 
mainloop()