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之list和str比较
Sep 20 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
Apr 12 Python
Python手机号码归属地查询代码
May 04 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
浅谈django 模型类使用save()方法的好处与注意事项
Mar 28 Python
keras的ImageDataGenerator和flow()的用法说明
Jul 03 Python
python实现简单的五子棋游戏
Sep 01 Python
python3代码中实现加法重载的实例
Dec 03 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 03 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
UCenter 批量添加用户的php代码
2012/07/17 PHP
PHP自动生成后台导航网址的最佳方法
2013/08/27 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
Python json模块使用实例
2015/04/11 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
python3爬取各类天气信息
2018/02/24 Python
python pandas生成时间列表
2019/06/29 Python
python scipy卷积运算的实现方法
2019/09/16 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
类的核心特性有哪些
2014/01/01 面试题
摄影实习自我鉴定
2013/09/20 职场文书
工厂厂长岗位职责
2013/11/08 职场文书
就业协议书
2014/09/12 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
社团招新宣传语
2015/07/13 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
写好Python代码的几条重要技巧
2021/05/21 Python