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 使用心得(九)解决No Python interpreter selected的问题
Jun 06 Python
举例讲解Linux系统下Python调用系统Shell的方法
Nov 07 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
Feb 08 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
简单了解python filter、map、reduce的区别
Jan 14 Python
Python自动采集微信联系人的实现示例
Feb 28 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
python 怎样进行内存管理
Nov 10 Python
python中time tzset()函数实例用法
Feb 18 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出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
javascript 面向对象 function类
2010/05/13 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
载入jQuery库的最佳方法详细说明及实现代码
2012/12/28 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python列表(list)常用操作方法小结
2015/02/02 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
pycharm快捷键汇总
2020/02/14 Python
详解Python中的文件操作
2021/01/14 Python
校园演讲稿汇总
2014/05/21 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL