#Python制作一个时钟

#Python制作一个时钟
import turtle
from datetime import *
def skip(step):
    #移动指定步数
    turtle.penup()
    turtle.forward(step)
    turtle.pendown()

def mk_hand(name,length):
    #绘制指针形状
    turtle.reset()#清空窗口,重置turtle状态为起始状态
    skip(-length*0.1)
    
    turtle.begin_poly()#开始记录多边形的顶点,当前位置是多边形的第一个顶点
    turtle.forward(length*1.1)
    turtle.end_poly()#停止记录多边形的顶点,当前乌龟位置是多边形的最后一个顶点,将与第一个顶点相连
    handForm=turtle.get_poly()#返回最后记录的多边形
    turtle.register_shape(name,handForm)#注册Turtle形状命令

def setup_clock(radius):
    #绘制表盘
    turtle.reset()
    turtle.pensize(7)
    for i in range(60):
        skip(radius)
        if i%5==0:
            turtle.pencolor("black")
            turtle.forward(20)
            if i==0:
                turtle.write(int(12),align="center",font=("Courier",14,"bold"))
            elif i==30:
                skip(25)
                turtle.write(int(i/5),align="center",font=("Courier",14,"bold"))
                skip(-25)
            elif (i==25 or i==35):
                skip(20)
                turtle.write(int(i/5),align="center",font=("Courier",14,"bold"))
                skip(-20)
            else:
                turtle.write(int(i/5),align="center",font=("Courier",14,"bold"))
            skip(-radius-20)
        else:
            turtle.pencolor("red")
            turtle.dot(5)
            skip(-radius)
        turtle.right(6)#顺时钟移动6度
def Week(t):   
    week = ["星期一", "星期二", "星期三",
            "星期四", "星期五", "星期六", "星期日"]
    return week[t.weekday()]
 
def Date(t):
    y = t.year
    m = t.month
    d = t.day
    return "%s年%d月%d日" % (y, m, d)

def tick():
    #指针更新
    t=datetime.today()
    sec_hand.setheading(6*t.second)
    min_hand.setheading(6*t.minute)
    hur_hand.setheading(30*t.hour)

    turtle.tracer(False)
    printer.forward(65)
    printer.write(Week(t), align="center",font=("Courier", 14, "bold"))
    printer.back(130)
    printer.write(Date(t),align="center",font=("Courier", 14, "bold"))
    printer.home()
    turtle.tracer(True)
    turtle.ontimer(tick,1000)


turtle.title("时钟")
turtle.tracer(False)
turtle.mode("logo")

#绘制指针
mk_hand("secHand",135)
mk_hand("minHand",125)
mk_hand("hurHand",90)
sec_hand=turtle.Turtle()
sec_hand.shape("secHand")
sec_hand.pencolor("red")
min_hand=turtle.Turtle()
min_hand.shape("minHand")
min_hand.pencolor("blue")
hur_hand=turtle.Turtle()
hur_hand.shape("hurHand")
for hand in sec_hand,min_hand,hur_hand:
    hand.shapesize(1,1,3)
    hand.speed(0)

printer=turtle.Turtle()
printer.hideturtle()
printer.penup()

#绘制表盘
setup_clock(160)
turtle.tracer(True)
tick()

turtle.done()

猜你喜欢

转载自www.cnblogs.com/yanglike111/p/13180758.html