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实现排序算法
Feb 14 Python
使用Python的内建模块collections的教程
Apr 28 Python
在Python中处理列表之reverse()方法的使用教程
May 21 Python
用Python实现命令行闹钟脚本实例
Sep 05 Python
pip安装Python库时遇到的问题及解决方法
Nov 23 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
django 外键创建注意事项说明
May 20 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
python opencv通过按键采集图片源码
May 20 Python
matlab xlabel位置的设置方式
May 21 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 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
JS实现公告上线滚动效果
2021/01/10 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
python 巧用正则寻找字符串中的特定字符的位置方法
2018/05/02 Python
Python同步遍历多个列表的示例
2019/02/19 Python
Django中的静态文件管理过程解析
2019/08/01 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
Python实现自动整理文件的脚本
2020/12/17 Python
python中使用np.delete()的实例方法
2021/02/01 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
简历自我评价怎么写好呢?
2014/01/04 职场文书
房产转让协议书
2014/04/11 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
乒乓球比赛通知
2015/04/27 职场文书
TV动画《间谍过家家》公开PV
2022/03/20 日漫
利用Apache Common将java对象池化的问题
2022/06/16 Servers