用Python做可动时钟

1:代码

import turtle as t

import datetime as d

def skip(step):      

    t.penup()

    t.forward(step)

    t.pendown()

def drawClock(radius):

    t.speed(0)

    t.mode("logo")  

    t.hideturtle()

    t.pensize(7)

    t.home()

    for j in range(60):  

        skip(radius)

        if (j % 5 == 0):

            t.forward(20)

            skip(-radius - 20)

        else:

            t.dot(5)

            skip(-radius)

        t.right(6)

def makePoint(pointName, len):  

    t.penup()

    t.home()

    t.begin_poly()

    t.back(0.1 * len)

    t.forward(len * 1.1)

    t.end_poly()

    poly = t.get_poly()

    t.register_shape(pointName, poly)  

makePoint("hour",100)

def drawPoint():  

    global hourPoint, minPoint, secPoint, fontWriter

    makePoint("hourPoint", 100)  

    makePoint("minPoint", 120)

    makePoint("secPoint", 140)

    hourPoint = t.Pen()  

    hourPoint.shape("hourPoint")

    hourPoint.shapesize(1, 1, 6)

    minPoint = t.Pen()

    minPoint.shape("minPoint")

    minPoint.shapesize(1, 1, 4)

    secPoint = t.Pen()

    secPoint.shape("secPoint")

    secPoint.pencolor('red')

    fontWriter = t.Pen()

    fontWriter.pencolor('gray')

    fontWriter.hideturtle()

def getWeek(weekday):

    weekName = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']

    return weekName[weekday]   

def getRealtime():

    curr=d.datetime.now()

    curr_year=curr.year

    curr_month=curr.month

    curr_day=curr.day

    curr_hour=curr.hour

    curr_minute=curr.minute

    curr_second=curr.second

    curr_weekday=curr.weekday()

    t.tracer(False)

    secPoint.setheading(360/60*curr_second)

    minPoint.setheading(360/60*curr_minute) hourPoint.setheading(360/12*curr_hour+30/60*curr_minute)

    fontWriter.clear()

    fontWriter.home()

    fontWriter.penup()

    fontWriter.forward(80)  fontWriter.write(getWeek(curr_weekday),align="center",font=("Courier",14,"bold"))

    fontWriter.forward(-160)

fontWriter.write(getDate(curr_year,curr_month,curr_day),align="center",font=("Courier",14,"bold"))

    t.tracer(True)

    print(curr_second)

    t.ontimer(getRealtime,1000)

def getDate(year, month, day):

    return "%s-%s-%s" % (year, month, day)

def main():

    t.tracer(False)

    drawClock(160)

    drawPoint()

    getRealtime()

    t.tracer(True)

    t.mainloop()

#if__name__=='__main__':

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值