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 pass详细介绍及实例代码
Nov 24 Python
Python对字符串实现去重操作的方法示例
Aug 11 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
django允许外部访问的实例讲解
May 14 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
Python实现基于POS算法的区块链
Aug 07 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
Python编写打字训练小程序
Sep 26 Python
Python如何合并多个字典或映射
Jul 24 Python
如何把python项目部署到linux服务器
Aug 26 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.ini中文版(1)
2006/10/09 PHP
利用 window_onload 实现select默认选择
2006/10/09 PHP
PHP curl实现抓取302跳转后页面的示例
2014/07/04 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
js模块加载方式浅析
2017/08/12 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
使用graphics.py实现2048小游戏
2015/03/10 Python
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
详解python3实现的web端json通信协议
2016/12/29 Python
详解Python中for循环是如何工作的
2017/06/30 Python
Python代码执行时间测量模块timeit用法解析
2020/07/01 Python
Python csv文件记录流程代码解析
2020/07/16 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
美国批发零售网站:GearXS
2016/07/26 全球购物
美国钻石商店:Zales
2016/11/20 全球购物
英国在线花园中心:You Garden
2018/06/03 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
大学生物业管理求职信
2013/10/24 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
学习张林森心得体会
2014/09/10 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
2014年检验科工作总结
2014/11/22 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript