首页 > 编程 > Python > 正文

python使用turtle库绘制时钟

2020-02-15 21:58:27
字体:
来源:转载
供稿:网友

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后继续调用tickdef main():  tracer(False)  init()  setupclock(160)  tracer(True)  tick()  mainloop()main()

运行结果

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表