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 26 Python
Python中用Spark模块的使用教程
Apr 13 Python
在Python中使用模块的教程
Apr 27 Python
Python实现线程池代码分享
Jun 21 Python
浅析Python 中整型对象存储的位置
May 16 Python
Python实现调用另一个路径下py文件中的函数方法总结
Jun 07 Python
python实现贪吃蛇小游戏
Mar 21 Python
Python 旋转打印各种矩形的方法
Jul 09 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
如何在mac版pycharm选择python版本
Jul 21 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
python在package下继续嵌套一个package
Apr 14 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实现生成模糊图片的方法示例
2017/12/21 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
Javascript中Eval函数的使用
2010/03/23 Javascript
js常用排序实现代码
2010/12/28 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
jquery使用经验小结
2015/05/20 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
Php多进程实现代码
2018/05/07 Python
python3人脸识别的两种方法
2019/04/25 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
python移位运算的实现
2019/07/15 Python
python中str内置函数用法总结
2020/12/27 Python
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
汽车检测与维修专业求职信
2013/10/30 职场文书
机械专业毕业生自荐信
2013/11/02 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
户外活动总结
2015/02/04 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
运动会通讯稿50字
2015/07/20 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js