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 相关文章推荐
pycharm 使用心得(一)安装和首次使用
Jun 05 Python
通过C++学习Python
Jan 20 Python
给Python初学者的一些编程技巧
Apr 03 Python
python 全局变量的import机制介绍
Sep 07 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
对python PLT中的image和skimage处理图片方法详解
Jan 10 Python
Python2与Python3的区别实例分析
Apr 11 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
Jun 23 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
对python中的for循环和range内置函数详解
2018/04/17 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
Python远程方法调用实现过程解析
2020/07/28 Python
简述python Scrapy框架
2020/08/17 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
SQL Server笔试题
2012/01/10 面试题
酒店管理专业毕业生推荐信
2013/11/10 职场文书
建筑经济管理专业求职信分享
2014/01/06 职场文书
优秀班干部事迹材料
2014/01/26 职场文书
家居饰品店创业计划书
2014/01/31 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
求职信结尾怎么写
2014/05/26 职场文书
学生检讨书怎么写
2014/10/09 职场文书
毕业设计指导教师评语
2014/12/30 职场文书