mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 15:11:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#!/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()
 |