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使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
Python运用于数据分析的简单教程
Mar 27 Python
python函数装饰器用法实例详解
Jun 04 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
python实现人工智能Ai抠图功能
Sep 05 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
Python使用Paramiko控制liunx第三方库
May 20 Python
python框架flask入门之路由及简单实现方法
Jun 07 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
Jun 29 Python
关于Kotlin中SAM转换的那些事
Sep 15 Python
python 命令行传参方法总结
May 25 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猴子选大王问题解决方法
2015/05/12 PHP
PHP Web木马扫描器代码分享
2015/09/06 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
JavaScript之自定义类型
2012/05/04 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
Python中的random()方法的使用介绍
2015/05/15 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
Python中turtle作图示例
2017/11/15 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
python3 反射的四种基本方法解析
2019/08/26 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
python如何更新包
2020/06/11 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
个人债务授权委托书范本
2014/10/05 职场文书
企业法人任命书
2015/09/21 职场文书
推普标语口号大全
2015/12/26 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android