• #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()
  • 相关阅读:
    通过构造函数检查生成对象个数
    动手动脑二
    产生随机数的几种方法
    素数输出
    递归实现回文串
    java的方法重载
    统计单词频率
    四则运算和随机验证码
    微信小程序--家庭记账本开发--04
    微信小程序--家庭记账本开发--03
  • 原文地址:https://www.cnblogs.com/yanglike111/p/13180758.html
Copyright © 2020-2023  润新知