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编写脚本获取手机当前应用apk的信息
Jul 21 Python
python实现判断数组是否包含指定元素的方法
Jul 15 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 Python
django上传图片并生成缩略图方法示例
Dec 11 Python
PyQt5 pyqt多线程操作入门
May 05 Python
Django 模型类(models.py)的定义详解
Jul 19 Python
Django实现文件上传下载
Oct 06 Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 Python
python 字典套字典或列表的示例
Dec 16 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
Mar 20 Python
python zip,lambda,map函数代码实例
Apr 04 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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
浅谈PHP表单提交(POST&GET&URL编/解码)
2017/04/03 PHP
总结一些PHP中好用但又容易忽略的小知识
2017/06/02 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
高效率JavaScript编写技巧整理
2013/08/23 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
python中子类继承父类的__init__方法实例
2016/12/15 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
np.random.seed() 的使用详解
2020/01/14 Python
小城镇建设汇报材料
2014/08/16 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
小学生思想品德评语
2014/12/31 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
初三语文教学反思
2016/03/03 职场文书
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA