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 MD5文件生成码
Jan 12 Python
Python迭代和迭代器详解
Nov 10 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
Python中交换两个元素的实现方法
Jun 29 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
Series和DataFrame使用简单入门
Nov 13 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 Python
python在CMD界面读取excel所有数据的示例
Sep 28 Python
selenium自动化测试入门实战
Dec 21 Python
用python制作个视频下载器
Feb 01 Python
如何基于python实现单目三维重建详解
Jun 25 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
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
JS模拟多线程
2007/02/07 Javascript
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
js中的数组对象排序分析
2018/12/11 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
python中enumerate的用法实例解析
2014/08/18 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
python连接mongodb密码认证实例
2018/10/16 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
Python之循环结构
2019/01/15 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
pygame实现弹球游戏
2020/04/14 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
长青弘远的面试题
2012/06/09 面试题
配置管理计划的主要内容有哪些
2014/06/20 面试题
汉语专业毕业生自荐信
2014/07/06 职场文书
学习十八大宣传标语
2014/10/09 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
2015年测量员工作总结
2015/05/23 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
导游词之张家口
2019/12/13 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
Mysql忘记密码解决方法
2022/02/12 MySQL
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers