动态时钟代码 ———Python作业

本文介绍了如何使用Python的Turtle库创建一个动态时钟,包括定义表针、设置时区、绘制时钟外框和显示日期与星期。通过定时器实现秒针、分针和时针的实时更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#时钟
from turtle import *
from datetime import *

def Skip(step):
   penup()
   forward(step)
   pendown()

def mkHand(name, length):
    #注册Turtle形状,建立表针Turtle
  reset()
  Skip(-length*0.1)
  begin_poly()
  forward(length*1.1)
  end_poly()
  handForm = get_poly()
  register_shape(name, handForm)

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

def SetupClock(radius):
  #建立表的外框
  reset()
  pensize(7)
  for i in range(60):
    Skip(radius)
    if i % 5 == 0:
       forward(20)
       Skip(-radius-20)
    else:
      dot(5)
      Skip(-radius)
    right(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()
  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)

  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()
  tracer(True)

  ontimer(Tick, 100)#100ms后继续调用tick

def main():
    tracer(False)
    Init()
    SetupClock(160)
    tracer(True)
    Tick()
    mainloop()
if __name__ == "__main__":
   main()

 每一段都有代码注释,复制可用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值