代码资源来自:

一、完整代码:

#coding=UTF-8

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)defInit():globalsecHand,minHand,hurHand,printer

mode("logo") #重置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 insecHand,minHand,hurHand:

hand.shapesize(1,1,3)

hand.speed(0)

printer= Turtle() #建立输出文字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)defWeek(t):

week= ["Mon", "Tues", "Wed","Thur", "Fri", "Sat", "Sun"]returnweek[t.weekday()]defDate(t):

y=t.year

m=t.month

d=t.dayreturn "%s %d %d" %(y, m, d)defTick():

t=datetime.today()

second= t.second + t.microsecond * 0.000001minute= t.minute + second/60.0hour= t.hour + minute/60.0secHand.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

defmain():

tracer(False)

Init()

SetupClock(160)

tracer(True)

Tick()

mainloop()if __name__ == "__main__":

main()

二、运行结果截图

三、程序解读

1、思路

需求:5个Turtle对象, 1个绘制外表盘+1个输出文字++3个模拟表上针

Step1:建立5个Turtle对象并初始化 (表盘绘制和文本输出对象是turtle常见的对象方式;turtle的外观shape就是指针形状,在每一时刻以轴心为圆心旋转了一定角度)

Step2:静态表盘绘制

Step3:根据时钟更新表针位置与时间信息

基本库:Turtle、datetime

2、代码

(1)fromturtle import *

Turtle库——Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟(画笔),在一个横轴为x、纵轴为y的坐标系(画布),根据一组函数指令的控制,在平面坐标系中移动,从而在它爬行的路径上绘制了图形。

操纵海龟绘图有3种命令:

运动命令

画笔控制命令

全局控制命令

还有其他命令

(2)from datetime import *

datetime模块重新封装了time模块,提供了更多处理日期和时间的接口。包含以下几个类和两个常量:

每个类中定义了很多属性和方法,包括对时间的调用及格式转换等问题在此不再赘述。

(3)几个重要的函数 (代码中的函数写成mode(),而不用写成turtle.mode(),是因为turtle是python的标准库,在python项目里不会提示“unresolved reference "xxx’”,但在解释器为python2.7的python文件中不会有提示。此提示不影响代码运行)

SetupClock(radius): 绘制表盘,表盘半径radius为参数

设置画笔大小,通过60次循环绘制刻度,每5个刻度为短线段,其余为小圆点。

Skip(step): 由于表盘刻度不连续,需频繁抬起画笔,放下画笔

mkHand(name,length): 定义指针几何形状。

使用两个函数begin_poly() 、end_poly()记录多边形形状,register_shape函数将handForm几何形状注册为合法的turtle外形.

Init(): 初始化表针和文本对象

Tick(): 绘制表针的动态显示

获取当前的时分秒,设置每个指针转动的角度,绘制星期与日期文本,每隔100ms调用此函数更新时间

tracer(False) : 实现绘制的效果同时出现,用tracer函数控制刷新,false时动画关闭,绘制结束后一致刷新;true时恢复动画的绘制效果

mainloop(): 启动事件循环 -调用Tkinter的mainloop函数。必须是乌龟图形程序中的最后一个语句。

the end.......

python小程序-第一个python小程序——即时动态时钟(代码解读)相关推荐

  1. 圣诞节快到了,用Python给好友做一个圣诞树小程序吧【保姆式教程】

    圣诞节快到了,用Python给好友做一个圣诞树小程序吧[保姆式教程] 马上圣诞节了,一个人的圣诞节可能会有些孤独,我来教你怎么用代码写一棵超级治愈的圣诞树. 话不多说,下面来看具体怎么实现吧! 文章目 ...

  2. 第一个程序(python)-helloworld_创建第一个python程序:‘Hello World!’

    安装好python解释器就可以创建第一个仪式程序Helloworld了 1.Python程序的3种运行方式 1.1.Python解释器直接运行 在Windows或者Linux命令行输入python,进 ...

  3. c语言字符串用for语句去重,python简介、第一个python程序、变量、字符编码、用户交互程序、if...else、while、for...

    也愿大家永葆初心-- 已识乾坤大,犹怜草木青. 一.python简介 首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算 ...

  4. python编程在哪里写程序-第一个Python程序——在屏幕上输出文本

    本节我将给大家介绍最简单.最常用的 Python 程序--在屏幕上输出一段文本,包括字符串和数字. Python 使用 print 函数在屏幕上输出一段文本,输出结束后会自动换行. 在屏幕上输出字符串 ...

  5. python程序-第一个Python程序——在屏幕上输出文本

    本节我将给大家介绍最简单.最常用的 Python 程序--在屏幕上输出一段文本,包括字符串和数字. Python 使用 print 函数在屏幕上输出一段文本,输出结束后会自动换行. 在屏幕上输出字符串 ...

  6. 第一个python解释器_第一个python程序

    回顾昨日重点(需记住5*) 三大核心: cpu--运行程序 内存--基于电,存取速度快,断电丢失数据 硬盘--基于磁,存取速度远远慢于内存,断电不丢失数据 操作系统 应用程序 操作系统 (window ...

  7. Python基础班---第一部分(基础)---Python基础知识---第一个Python程序

    01. 第一个 HelloPython 程序 1.1 Python 源程序的基本概念 Python 源程序就是一个特殊格式的文本文件,可以使用任意文本编辑软件做 Python 的开发 Python 程 ...

  8. Python学习笔记-第一个Python程序

    上代码前先上个东西: 直接输入 >>>'11111111' 与输入 >>>print('11111111') 有何不同? 没错,直接输入是将结果及类型打印到屏幕上, ...

  9. Python逐块执行另一个Python程序中的代码观察运行过程

    今天是10月24日,也是一年一度的程序员节,祝所有热爱代码的朋友们节日快乐! 祝所有程序员1024节日快乐 全国高校教师Python课程高级研修班(线上,11月20-21日) 中国大学MOOC&quo ...

最新文章

  1. 开源库nothings/stb的介绍及使用(图像方面)
  2. copy模块中的copy与deepcopy的区别
  3. 小波阈值去噪原理及实现
  4. 使用CSS实现透明边框的效果——兼容当前各种主流浏览器[xyytIT]
  5. BZOJ 1034: [ZJOI2008]泡泡堂BNB
  6. html中div页面布局,前端入门篇(二):利用Div + CSS快速布局页面
  7. Office安装成功之后,.ppt的文档图标显示不正常,怎么解决?
  8. 二元二次方程例题_二元二次方程组-解法-例题
  9. Elasticsearch:InteliJ Elasticsearch plugin 集成
  10. GitHub设置代理 提升速度
  11. SAS PROC SQL
  12. 淘宝修改密码可能引发手机骚扰
  13. 东南大学提出条件自监督小样本学习方法,显著提升小样本分类准确率
  14. 中止执行后超过2年_执行中止后恢复执行的期限有什么规定
  15. V-token的技术革新,引领数字化支付热潮
  16. 如何构建一个在线绘图工具:Feakin 是如何设计与构建的?
  17. 编译原理——说明语句翻译
  18. 550w计算机电源,GTX 1080显卡配550W电源够用不?老司机来告诉你如何DIY电脑主机...
  19. 东软睿道出席2013年国家示范性软件学院院长联席会会议
  20. Godaddy SSL 证书配置(Nginx)

热门文章

  1. 为什么一些人喜欢在java代码中能加final的变量都加上final
  2. android从放弃到精通第11天 勿忘初心
  3. python coding style guide 的快速落地实践——业内python 编码风格就pep8和谷歌可以认作标准...
  4. 积神经网络的参数优化方法——调整网络结构是关键!!!你只需不停增加层,直到测试误差不再减少....
  5. JavaScript 运行机制详解:Event Loop——续
  6. 事件冒泡和捕获的执行顺序
  7. cookie 的使用
  8. JQuery-- 获取元素的宽高、获取浏览器的宽高和垂直滚动距离
  9. 原生JS和jQuery操作DOM的区别小结
  10. C语言 · 求存款