python绘制动态时钟_python使用turtle库绘制时钟

Python函数库众多,而且在不断更新,所以学习这些函数库最有效的方法,就是阅读Python官方文档。同时借助Google和百度。

本文介绍的turtle库对应的

绘制动态钟表的基本思路如下(面向对象的编程):

使用5个turtle对象

1个turtle:绘制外表盘

3个turtle:模拟表针行为

1个turtle:输出表盘上文字

根据实时时间使用ontimer()函数更新表盘画面,显示效果如下:

相关函数的使用在程序中进行了详细的注释,代码如下:

# -*- coding: utf-8 -*-

"""

Created on Fri Jan 12 10:43:55 2018

@author: Administrator

"""

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+second/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()

main()

运行结果

2018622110615975.jpg?201852211628

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值