python使用Turtle库绘制动态钟表


Posted in Python onNovember 19, 2018

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

本文介绍的turtle库对应的官方文档地址

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

使用5个turtle对象

1个turtle:绘制外表盘

3个turtle:模拟表针行为

1个turtle:输出表盘上文字

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

python使用Turtle库绘制动态钟表

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

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", 135)
 mkHand("minHand", 110)
 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) #设置朝向,每秒转动6度
 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.back(50)
 printer.write("i_chaoren", align="center",
     font=("Courier", 14, "bold"))
 printer.home()
 tracer(True)
 
 ontimer(Tick, 1000)#1000ms后继续调用tick
 
def main():
 tracer(False) #使多个绘制对象同时显示
 Init()
 SetupClock(160)
 tracer(True)
 Tick()
 mainloop()
 
if __name__ == "__main__":  
 main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python利用多进程将大量数据放入有限内存的教程
Apr 01 Python
python简单实现计算过期时间的方法
Jun 09 Python
Python实现的科学计算器功能示例
Aug 04 Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 Python
快速解决pandas.read_csv()乱码的问题
Jun 15 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 Python
python实现简单银行管理系统
Oct 25 Python
Python Pickle 实现在同一个文件中序列化多个对象
Dec 30 Python
python 控制台单行刷新,多行刷新实例
Feb 19 Python
python批量修改交换机密码的示例
Sep 22 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
Python 批量下载阴阳师网站壁纸
May 19 Python
python+PyQT实现系统桌面时钟
Jun 16 #Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 #Python
Window环境下Scrapy开发环境搭建
Nov 18 #Python
Python中安装easy_install的方法
Nov 18 #Python
win7 x64系统中安装Scrapy的方法
Nov 18 #Python
python实现简易数码时钟
Feb 19 #Python
python爬取淘宝商品销量信息
Nov 16 #Python
You might like
SMARTY学习手记
2007/01/04 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
非常好的js代码
2006/06/27 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
Python探索之自定义实现线程池
2017/10/27 Python
Django 路由控制的实现代码
2018/11/08 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
python相对企业语言优势在哪
2020/06/12 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
汽车驾驶求职信
2013/10/25 职场文书
挂科检讨书范文
2014/02/20 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
2015年工程师工作总结
2015/04/30 职场文书
爱国电影观后感
2015/06/19 职场文书
公司周年庆典致辞
2015/07/30 职场文书
2016年教师新年寄语
2015/08/18 职场文书