Python实现动态时钟的两种方案:Turtle图形库与控制台输出

小满
小满
发布时间:2026-10-13 | 2人浏览过
原创

本文详细介绍两种在Python中实现动态时钟的方法。第一种利用Turtle图形库,通过建立5个Turtle对象分别绘制表盘、三根指针及文字输出,实现图形化动态更新。第二种基于控制台环境,通过导入time、sys和os模块,利用无限循环、字符串格式化及清屏刷新技术,在命令行实时显示当前时间。

开发语言:Python

集成开发环境:Python.IDE

1. 编写一个时钟程序,要求能够根据系统时间动态更新显示内容。

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 相关产品和应用

全部下载

专题列表