Python实现时钟显示效果思路详解


Posted in Python onApril 11, 2018

语言:Python

IDE:Python.IDE

1.编写时钟程序,要求根据时间动态更新

Python实现时钟显示效果思路详解

2.代码思路

需求:5个Turtle对象, 1个绘制外表盘+3个模拟表上针+1个输出文字
Step1:建立Turtle对象并初始化
Step2:静态表盘绘制
Step3:根据时钟更新表针位置与时间信息

基本库:Turtle、datetime

3.代码段

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()
  #注册Turtle形状命令register_shape(name,shape=None)
  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 + minute/60.0
  secHand.setheading(6*second)
  minHand.setheading(6*minute)
  hurHand.setheading(30*hour)
   #介入Tracer函数以控制刷新速度
  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()
if __name__ == "__main__":    
  main()

补充:

Python实现时钟

1.小时钟获取当前时间并用打印在Console上

2.上代码

import time,sys,os
 while(1):
   t = time.strftime('%H:%M:%S',time.localtime(time.time()))
   sys.stdout.write(t+'\b'*10)
   sys.stdout.flush()
   time.sleep(0.1)
   os.system('cls')

3.解释

第一步:导入time,sys,os模块

第二部:实现无限循环

第三步:实现格式化输出,具体的详细使用方法,参见:这里

第四部:重定向到Console上

第五步:刷新

第六步:间隔0.1执行一次

第七步:清屏

Python 相关文章推荐
python翻译软件实现代码(使用google api完成)
Nov 26 Python
Python实现类继承实例
Jul 04 Python
浅析Git版本控制器使用
Dec 10 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
Python列表解析配合if else的方法
Jun 23 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
python pandas.DataFrame.loc函数使用详解
Mar 26 Python
linux 下selenium chrome使用详解
Apr 02 Python
python实现梯度下降算法的实例详解
Aug 17 Python
python 动态绘制爱心的示例
Sep 27 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 Python
pandas数据分组和聚合操作方法
Apr 11 #Python
使用pandas对矢量化数据进行替换处理的方法
Apr 11 #Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 #Python
pandas按若干个列的组合条件筛选数据的方法
Apr 11 #Python
pandas对指定列进行填充的方法
Apr 11 #Python
Python入门学习指南分享
Apr 11 #Python
对numpy和pandas中数组的合并和拆分详解
Apr 11 #Python
You might like
重料打造自己的“宝马”---第三代
2021/03/02 无线电
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
php&mysql 日期操作小记
2012/02/27 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
php实现微信企业转账功能
2018/10/02 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
python爬取哈尔滨天气信息
2018/07/14 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
Python super()方法原理详解
2020/03/31 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
意大利奢侈品网站:Italist
2016/08/23 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
师范院校学生自荐信范文
2013/12/27 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
见习报告的格式
2014/11/04 职场文书
2014年库房工作总结
2014/11/26 职场文书
机动车交通事故协议书
2015/01/29 职场文书
护士旷工检讨书
2015/08/15 职场文书
《火烧云》教学反思
2016/02/23 职场文书