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天气预报采集器实现代码(网页爬虫)
Oct 07 Python
在Python中使用HTML模版的教程
Apr 29 Python
python求解水仙花数的方法
May 11 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
Python基础之文件读取的讲解
Feb 16 Python
大家都说好用的Python命令行库click的使用
Nov 07 Python
使用python的turtle绘画滑稽脸实例
Nov 21 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
Apr 10 Python
keras之权重初始化方式
May 21 Python
python如何在word中存储本地图片
Apr 07 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 socket(fsockopen)的应用实例分析
2013/06/02 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
学习ExtJS accordion布局
2009/10/08 Javascript
javascript 命名规则 变量命名规则
2010/02/25 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
前端性能优化建议
2020/09/17 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
Python字符串切片操作知识详解
2016/03/28 Python
详解python tkinter模块安装过程
2020/01/06 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
python自动化发送邮件实例讲解
2021/01/04 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
html5指南-5.使用web storage存储键值对的数据
2013/01/07 HTML / CSS
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
预备党员党校学习自我评价分享
2013/11/12 职场文书
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
英语自我评价范文
2014/01/24 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
员工安全承诺书
2014/05/22 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
医院病假条怎么写
2015/08/17 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
Go语言安装并操作redis的go-redis库
2022/04/14 Golang