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实现获取序列中最小的几个元素
Sep 25 Python
python使用装饰器和线程限制函数执行时间的方法
Apr 18 Python
基于wxpython实现的windows GUI程序实例
May 30 Python
Python内建数据结构详解
Feb 03 Python
使用python实现rsa算法代码
Feb 17 Python
python读取xlsx的方法
Dec 25 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
基于django传递数据到后端的例子
Aug 16 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
Python3+selenium配置常见报错解决方案
Aug 28 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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 xml-rpc远程调用
2008/12/19 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
js function定义函数使用心得
2010/04/15 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
python实现在windows服务中新建进程的方法
2015/06/30 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
机器学习python实战之手写数字识别
2017/11/01 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
十佳大学生事迹材料
2014/01/29 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
鲁迅故里导游词
2015/02/05 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python