python使用turtle库绘制时钟


Posted in Python onMarch 25, 2020

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后继续调用tick

def main():
 tracer(False)
 init()
 setupclock(160)
 tracer(True)
 tick()
 mainloop()
main()

运行结果

python使用turtle库绘制时钟

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

Python 相关文章推荐
Python类方法__init__和__del__构造、析构过程分析
Mar 06 Python
整理Python中的赋值运算符
May 13 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
python常见排序算法基础教程
Apr 13 Python
Python实现利用163邮箱远程关电脑脚本
Feb 22 Python
flask入门之表单的实现
Jul 18 Python
python交互模式下输入换行/输入多行命令的方法
Jul 02 Python
Python有参函数使用代码实例
Jan 06 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
python blinker 信号库
May 04 Python
Python日期时间对象转换为字符串的实例
Jun 22 #Python
python pandas 对时间序列文件处理的实例
Jun 22 #Python
python使用turtle绘制分形树
Jun 22 #Python
python递归函数绘制分形树的方法
Jun 22 #Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
Jun 22 #Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 #Python
python处理csv中的空值方法
Jun 22 #Python
You might like
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
js实现简易计算器功能
2019/10/18 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python二元表达式用法
2019/12/04 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
python的sys.path模块路径添加方式
2020/03/09 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
影视艺术学院毕业生自荐信
2013/11/13 职场文书
2014年高三毕业生自我评价
2014/01/11 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
十七岁的单车观后感
2015/06/12 职场文书
董事长年会致辞
2015/07/29 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书