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中的编码知识整理汇总
Jan 26 Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
python:接口间数据传递与调用方法
Dec 17 Python
python中对数据进行各种排序的方法
Jul 02 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
python使用sklearn实现决策树的方法示例
Sep 12 Python
Python 实现平台类游戏添加跳跃功能
Mar 27 Python
Jupyter Notebook输出矢量图实例
Apr 14 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
使用OpenCV去除面积较小的连通域
Jul 05 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 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
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
PHP工厂模式的日常使用
2019/03/20 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
Vuex 入门教程
2018/01/10 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
Python类定义和类继承详解
2015/05/08 Python
简单学习Python多进程Multiprocessing
2017/08/29 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
Django model序列化为json的方法示例
2018/10/16 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
IE9下html5初试小刀
2010/09/21 HTML / CSS
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
幼儿园教师岗位职责
2014/03/17 职场文书
英文自荐信常用句子
2014/03/26 职场文书
安全生产标语
2014/06/06 职场文书
2015年教学工作总结
2015/04/02 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js