编写时钟程序

from turtle import *
from datetime import *


def skip(step):
     penup()
     fd(step)
     pendown()

def mkhand(name,length):
     reset()
     skip(-length*0.1)
     begin_poly()
     fd(length*1.1)
     end_poly()
     handform = get_poly()
     register_shape(name,handform)

def init():
     global sechand,minhand,hurhand,printer
     mode("logo")   #重置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(100,1,3)
          hand.speed(0)
     printer = Turtle()
     printer.hideturtle ()
     printer.penup()

def setupclock(radius):
     reset()
     pensize(7)
     for i in range(60):
          skip(radius)
          if i % 5 == 0:
               fd(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.fd(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,10)  #每10ms调用一次tick函数

def main():
     tracer(False)
     init()
     setupclock(160)
     tracer(True)
     tick()
     mainloop()
     
main()
'''if __name__ == '__main()__':
     main()'''



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值