python使用turtle库绘制时钟

 更新时间:2020年03月25日 11:06:14   作者:蠡1204  
这篇文章主要为大家详细介绍了python使用turtle库绘制时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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虚拟环境创建的两种方法

    python虚拟环境创建的两种方法

    本文主要介绍了python虚拟环境创建的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 一篇文章学会两种将python打包成exe的方式

    一篇文章学会两种将python打包成exe的方式

    最近有部分小伙伴问我,python 写的项目可不可以打包成exe程序,放到没有python环境上的电脑中执行? 答案当然是可以的,下面这篇文章主要给大家介绍了如何通过一篇文章学会两种将pyton打包成exe的方式,需要的朋友可以参考下
    2021-11-11
  • PyTorch实现联邦学习的基本算法FedAvg

    PyTorch实现联邦学习的基本算法FedAvg

    这篇文章主要为大家介绍了PyTorch实现联邦学习的基本算法FedAvg,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示

    Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示

    这篇文章主要介绍了Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 用Python编写一个简单的FUSE文件系统的教程

    用Python编写一个简单的FUSE文件系统的教程

    这篇文章主要介绍了用Python编写一个简单的FUSE文件系统的教程,对于数据的备份很有帮助,需要的朋友可以参考下
    2015-04-04
  • 利用Python将Excel快速转换成HTML的代码实现

    利用Python将Excel快速转换成HTML的代码实现

    在日常的办公和数据处理任务中,Excel文件因其强大的表格数据管理能力而备受欢迎,然而,在某些情况下,我们可能需要将Excel文件转换成HTML格式,以便在网页上展示或进行进一步的数据处理,本文将介绍如何利用Python将Excel文件快速转换成HTML,并提供具体的代码示例和案例
    2024-12-12
  • OpenCV实战之图像拼接的示例代码

    OpenCV实战之图像拼接的示例代码

    图像拼接可以应用到手机中的全景拍摄,也就是将多张图片根据关联信息拼成一张图片。本文将介绍利用Python OpenCV实现图像拼接的方法,感兴趣的可以试一试
    2022-01-01
  • 教你利用Python破解ZIP或RAR文件密码

    教你利用Python破解ZIP或RAR文件密码

    常常会从网络上下载一些带密码的压缩包,想要获取里面的内容,往往就要给提供商支付一些费用.想要白嫖其中的内容,常见的做法是百度搜索一些压缩包密码破解软件,但后果相信体验过的人都知道.本文详细介绍了怎么破解压缩包,需要的朋友可以参考下
    2021-05-05
  • pytorch锁死在dataloader(训练时卡死)

    pytorch锁死在dataloader(训练时卡死)

    这篇文章主要介绍了pytorch锁死在dataloader(训练时卡死),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python 按规则解析并替换字符串中的变量及函数(示例代码)

    Python 按规则解析并替换字符串中的变量及函数(示例代码)

    这篇文章主要介绍了Python 按规则解析并替换字符串中的变量及函数,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-11-11

最新评论