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实现巡检系统(solaris)示例
Apr 02 Python
Python通过poll实现异步IO的方法
Jun 04 Python
Python3使用requests登录人人影视网站的方法
May 11 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
Django 实现购物车功能的示例代码
Oct 08 Python
django基于存储在前端的token用户认证解析
Aug 06 Python
python中web框架的自定义创建
Sep 08 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
在tensorflow以及keras安装目录查询操作(windows下)
Jun 19 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
解决pip安装的第三方包在PyCharm无法导入的问题
Oct 15 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数组应该有多大的分析
2009/07/30 PHP
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
PHP图片验证码制作实现分享(全)
2012/05/10 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
PHP getName()函数讲解
2019/02/03 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
Node.js简单入门前传
2017/08/21 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
Python 类的继承实例详解
2017/03/25 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
基于opencv实现简单画板功能
2020/08/02 Python
PHP如何自定义函数
2016/09/16 面试题
师范生教师实习自我鉴定
2013/09/27 职场文书
群众路线对照检查材料
2014/09/22 职场文书
行政介绍信范文
2015/05/04 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
Python答题卡识别并给出分数的实现代码
2021/06/22 Python