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字典多条件排序方法实例
Jun 30 Python
使用Python的urllib2模块处理url和图片的技巧两则
Feb 18 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
Mar 13 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
Django添加feeds功能的示例
Aug 07 Python
在Python中使用gRPC的方法示例
Aug 08 Python
Python读写zip压缩文件的方法
Aug 29 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
Dec 14 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 Python
详解KMP算法以及python如何实现
Sep 18 Python
Python 实现键盘鼠标按键模拟
Nov 18 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
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
JS打印gridview实现原理及代码
2013/02/05 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
js倒计时显示实例
2016/12/11 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
基于Node的Axure文件在线预览的实现代码
2019/08/28 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
python 七种邮件内容发送方法实例
2014/04/22 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
python DataFrame 取差集实例
2019/01/30 Python
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
销售行政专员职责
2014/01/03 职场文书
中国好声音广告词
2014/03/18 职场文书
感恩之星事迹材料
2014/05/03 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
学生吸烟检讨书
2014/09/14 职场文书
迎新生标语大全
2014/10/06 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
行政撤诉申请书
2015/05/18 职场文书
Golang 字符串的常见操作
2022/04/19 Golang
图神经网络GNN算法
2022/05/11 Python