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二分法实现实例
Nov 21 Python
python连接MySQL数据库实例分析
May 12 Python
python实现给微信公众号发送消息的方法
Jun 30 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
在python中bool函数的取值方法
Nov 01 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
Python 从列表中取值和取索引的方法
Dec 25 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
Python实现初始化不同的变量类型为空值
Jun 02 Python
Python unittest discover批量执行代码实例
Sep 08 Python
浅谈Python数学建模之线性规划
Jun 23 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 反射机制实现动态代理的代码
2008/10/22 PHP
php若干单维数组遍历方法的比较
2011/09/20 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
window.open的功能全解析
2006/10/10 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
web.py在模板中输出美元符号的方法
2014/08/26 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
如何在pycharm中安装第三方包
2020/10/27 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
汽车驾驶求职信
2013/10/25 职场文书
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
会计个人实习计划书
2014/08/15 职场文书
文明社区申报材料
2014/08/21 职场文书
2014年项目工作总结
2014/11/24 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers