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 相关文章推荐
django启动uwsgi报错的解决方法
Apr 08 Python
Python wxpython模块响应鼠标拖动事件操作示例
Aug 23 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
Python中使用__new__实现单例模式并解析
Jun 25 Python
Python变量访问权限控制详解
Jun 29 Python
Python文件操作基础流程解析
Mar 19 Python
python列表的逆序遍历实现
Apr 20 Python
Django实现内容缓存实例方法
Jun 30 Python
pycharm如何使用anaconda中的各种包(操作步骤)
Jul 31 Python
Python接口自动化测试的实现
Aug 28 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 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高手?学会“懒惰”的编程
2006/12/05 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
php的4种常见运行方式
2015/03/20 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
Vue数组更新及过滤排序功能
2017/08/10 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
python备份文件的脚本
2008/08/11 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
opencv 阈值分割的具体使用
2020/07/08 Python
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
俄罗斯游戏商店:Buka
2020/03/01 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
旅游业大学生创业计划书
2014/01/31 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
2016新年问候语大全
2015/11/11 职场文书
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers