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使用新浪微博API发送微博的例子
Apr 10 Python
Python中基础的socket编程实战攻略
Jun 01 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
May 28 Python
Python配置文件处理的方法教程
Aug 29 Python
原生python实现knn分类算法
Oct 24 Python
python中的RSA加密与解密实例解析
Nov 18 Python
Python 模拟动态产生字母验证码图片功能
Dec 24 Python
Python re正则表达式元字符分组()用法分享
Feb 10 Python
python实现快速文件格式批量转换的方法
Oct 16 Python
python操作toml文件的示例代码
Nov 27 Python
如何用 Python 处理不平衡数据集
Jan 04 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 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
php object转数组示例
2014/01/15 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
js 小数取整的函数
2010/05/10 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
js闭包实例汇总
2014/11/09 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
python制作一个桌面便签软件
2015/08/09 Python
Python检测网站链接是否已存在
2016/04/07 Python
python验证码识别的示例代码
2017/09/21 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
python读取Kafka实例
2019/12/23 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
修理厂厂长岗位职责
2014/01/30 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
新护士岗前培训制度
2014/02/02 职场文书
读书活动实施方案
2014/03/10 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
多表查询、事务、DCL
2021/04/05 MySQL