教程丨Python绘图之动态简洁时钟

版权声明:禁止转载至其它平台,转载至博客需带上此文链接。 https://blog.csdn.net/qq_41841569/article/details/85158772

效果图图如下


教程丨Python绘图之动态简洁时钟

作者: 路飞

阅读文本大概需要 2 分钟。

教程丨Python绘图之动态简洁时钟

环境准备

运行平台: Windows 7 旗舰版

Python版本: Python 3.6.4

IDE: Python自带的IDLE

扫描二维码关注公众号,回复: 4632709 查看本文章

时间飞快的流逝,唯独现在,我有一种想对爱因斯坦发牢骚的心情。时间根据每个人的主观感受,既会变长,也会变短,相对论真是个既浪漫又伤感的东西呢。

绘制代码

import turtle 
from datetime import * 
# 画笔向前运动一段距离停下 
def Skip(step): 
 turtle.penup() 
 turtle.forward(step) 
 turtle.pendown() 
def mkHand(name, length): 
 # 注册Turtle形状,建立表针Turtle 
 turtle.reset() 
 Skip(-length * 0.1) 
 # 开始记录多边形的顶点
 turtle.begin_poly() 
 turtle.forward(length * 1.1) 
 # 停止记录多边形的顶点 
 turtle.end_poly() 
 # 返回最后记录的多边形 
 handForm = turtle.get_poly() 
 turtle.register_shape(name, handForm) 
def Init(): 
 global secHand, minHand, hurHand, printer 
 # 重置Turtle指向北 
 turtle.mode("logo") 
 # 建立三个表针Turtle并初始化 
 mkHand("secHand", 135) 
 mkHand("minHand", 125) 
 mkHand("hurHand", 90) 
 secHand = turtle.Turtle() 
 secHand.shape("secHand") 
 minHand = turtle.Turtle() 
 minHand.shape("minHand") 
 hurHand = turtle.Turtle() 
 hurHand.shape("hurHand") 
 for hand in secHand, minHand, hurHand: 
 hand.shapesize(1, 1, 3) 
 hand.speed(0) 
 # 建立输出文字Turtle 
 printer = turtle.Turtle() 
 # 隐藏画笔的turtle形状 
 printer.hideturtle() 
 printer.penup() 
def SetupClock(radius): 
 # 建立表的外框 
 turtle.reset() 
 turtle.pensize(7) 
 for i in range(60): 
 Skip(radius) 
 if i % 5 == 0: 
 turtle.forward(20) 
 Skip(-radius - 20) 
 Skip(radius + 20) 
 if i == 0: 
 turtle.write(int(12), align="center", font=("Courier", 14, "bold")) 
 elif i == 30: 
 Skip(25) 
 turtle.write(int(i/5), align="center", font=("Courier", 14, "bold")) 
 Skip(-25) 
 elif (i == 25 or i == 35): 
 Skip(20) 
 turtle.write(int(i/5), align="center", font=("Courier", 14, "bold")) 
 Skip(-20) 
 else: 
 turtle.write(int(i/5), align="center", font=("Courier", 14, "bold")) 
 Skip(-radius - 20) 
 else: 
 turtle.dot(5) 
 Skip(-radius) 
 turtle.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) 
 turtle.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() 
 turtle.tracer(True) 
 # 100ms后继续调用tick 
 turtle.ontimer(Tick, 100) 
def main(): 
 # 打开/关闭龟动画,并为更新图纸设置延迟 
 turtle.tracer(False) 
 Init() 
 SetupClock(160) 
 turtle.tracer(True) 
 Tick() 
 turtle.mainloop() 
if __name__ == "__main__": 
 main()
 

运行结果

教程丨Python绘图之动态简洁时钟

猜你喜欢

转载自blog.csdn.net/qq_41841569/article/details/85158772
今日推荐