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读写ini文件的方法
May 28 Python
浅谈flask中的before_request与after_request
Jan 20 Python
基于python中theano库的线性回归
Aug 31 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
flask 实现token机制的示例代码
Nov 07 Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 Python
Python中读取文件名中的数字的实例详解
Dec 25 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 Python
python 装饰器重要在哪
Feb 14 Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 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
实用函数8
2007/11/08 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
PHP编码转换
2012/11/05 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
JS前端加密算法示例
2016/12/22 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
pytorch构建多模型实例
2020/01/15 Python
python游戏开发的五个案例分享
2020/03/09 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
Python计算信息熵实例
2020/06/18 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
html5文字阴影效果text-shadow使用示例
2013/07/25 HTML / CSS
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
前端实现打印图像功能
2019/08/27 HTML / CSS
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
《乞巧》教学反思
2014/02/27 职场文书
小学一年级学生评语
2014/04/22 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
英语课外活动总结
2014/08/27 职场文书
优秀员工推荐材料
2014/12/20 职场文书
毕业设计致谢语
2015/05/14 职场文书
详解Go与PHP的语法对比
2021/05/29 PHP
PyTorch中的torch.cat简单介绍
2022/03/17 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python