• 个性时钟创建


    import turtle
    from datetime import *


    # 抬起画笔,向前运动一段距离放下
    def Skip(step):
    turtle.penup()
    turtle.forward(step)
    turtle.pendown()


    def mkHand(name, length):
    # 注册Turtle形状,建立表针Turtle
    turtle.reset()
    Skip(-length * 0.1)
    # 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
    turtle.begin_poly()
    turtle.forward(length * 1.1)
    # 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。
    turtle.end_poly()
    # 返回最后记录的多边形。
    handForm = turtle.get_poly()
    turtle.register_shape(name, handForm)


    def Init():
    global secHand, minHand, hurHand, printer
    # 重置Turtle指向北
    turtle.mode("logo")
    # 建立三个表针Turtle并初始化
    mkHand("secHand", 135)
    mkHand("minHand", 125)
    mkHand("hurHand", 90)
    secHand = turtle.Turtle()
    secHand.shape("secHand")
    minHand = turtle.Turtle()
    minHand.shape("minHand")
    hurHand = turtle.Turtle()
    hurHand.shape("hurHand")
    for hand in secHand, minHand, hurHand:
    hand.shapesize(1, 1, 3)
    hand.speed(0)
    # 建立输出文字Turtle
    printer = turtle.Turtle()
    # 隐藏画笔的turtle形状
    printer.hideturtle()
    printer.penup()


    def SetupClock(radius):
    # 建立表的外框
    turtle.reset()
    turtle.pencolor("black")
    turtle.pensize(7)
    for i in range(60):
    Skip(radius)
    if i % 5 == 0:
    turtle.forward(20)
    Skip(-radius - 20)

    Skip(radius + 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.dot(5)
    Skip(-radius)
    turtle.right(6)


    def Week(t):
    turtle.pencolor("red")
    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()
    second = t.second + t.microsecond * 0.000001
    minute = t.minute + second / 60.0
    hour = t.hour + minute / 60.0
    secHand.setheading(6 * second)
    minHand.setheading(6 * minute)
    hurHand.setheading(30 * 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)
    # 100ms后继续调用tick
    turtle.ontimer(Tick, 100)


    def main():
    # 打开/关闭龟动画,并为更新图纸设置延迟。
    turtle.tracer(False)
    Init()
    SetupClock(160)
    turtle.tracer(True)
    Tick()
    turtle.mainloop()


    if __name__ == "__main__":
    main()

  • 相关阅读:
    服务器时间同步
    DataX部署安装
    Mysql ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 解决方法
    mysql 使用需要注意的问题
    利用mysqldump 将一个表按条件导出数据
    mysql存储引擎分类
    MySQL数据备份之mysqldump使用
    count(1)、count(*)与count(列名)的执行区别
    rsync + sersync 实现实时数据同步
    ipmitool 工具使用
  • 原文地址:https://www.cnblogs.com/kwkk978113/p/10307016.html
Copyright © 2020-2023  润新知