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中if __name__ == "__main__"详细解释
Oct 21 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
python中int与str互转方法
Jul 02 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
Python模块汇总(常用第三方库)
Oct 07 Python
python实现图片插入文字
Nov 26 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
python rolling regression. 使用 Python 实现滚动回归操作
Jun 08 Python
python中的测试框架
Nov 13 Python
Python爬取某平台短视频的方法
Feb 08 Python
Pygame游戏开发之太空射击实战敌人精灵篇
Aug 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
UCenter Home二次开发指南
2009/05/28 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
php开启openssl的方法
2014/05/15 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
深入理解Python中变量赋值的问题
2017/01/12 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
英国时尚饰品和发饰购物网站:Claire’s
2017/07/04 全球购物
电子信息毕业生自荐信
2013/11/16 职场文书
外语系毕业生求职自荐信
2014/04/12 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
服装发布会策划方案
2014/05/22 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android