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删除文件示例分享
Jan 28 Python
Python实现从脚本里运行scrapy的方法
Apr 07 Python
python将文本转换成图片输出的方法
Apr 28 Python
Python开发的实用计算器完整实例
May 10 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
python分治法求二维数组局部峰值方法
Apr 03 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
Dec 04 Python
对Django的restful用法详解(自带的增删改查)
Aug 28 Python
详解python tkinter模块安装过程
Jan 06 Python
Matplotlib自定义坐标轴刻度的实现示例
Jun 18 Python
在CentOS7下安装Python3教程解析
Jul 09 Python
基于python实现复制文件并重命名
Sep 16 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 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
Python的净值数据接口调用示例分享
2016/03/15 Python
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
Django框架视图函数设计示例
2019/07/29 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
一套SQL笔试题
2016/08/14 面试题
教育科学研究生自荐信
2013/10/09 职场文书
《花木兰》教学反思
2014/04/09 职场文书
高校优秀辅导员事迹材料
2014/05/07 职场文书
个人授权委托书
2014/09/15 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
带你学习MySQL执行计划
2021/05/31 MySQL