一、前言

1、仅用来研究学习使用。
2、除正常显示时钟外,还可以实时显示当前对应的时辰,和经络养身提示。

3、适合辅助上班族来养生

二、效果如下:

三、源码如下:

'''
动态时钟附带十二时辰显示
'''
import turtle  # 导入绘图海龟模块
import datetime  # 导入日期时间模块# 十二时辰对照表(地支)
dizhi = {'23': ['子', '胆经当令, 万籁俱静正好眠'],'0': ['子', '胆经当令, 万籁俱静正好眠'],'1': ['丑', '肝经当令,肝脏藏血不熬夜'],'2': ['丑', '肝经当令,肝脏藏血不熬夜'],'3': ['寅', '肺经当令,肺脏主气好歇息'],'4': ['寅', '肺经当令,肺脏主气好歇息'],'5': ['卯', '大肠经当令,大肠当值宜排便'],'6': ['卯', '大肠经当令,大肠当值宜排便'],'7': ['辰', '胃经当令,食用早餐正当时'],'8': ['辰', '胃经当令,食用早餐正当时'],'9': ['巳', '脾经当令,脾经当值精神足'],'10': ['巳', '脾经当令,脾经当值精神足'],'11': ['午', '心经当令,心主神明当小憩'],'12': ['午', '心经当令,心主神明当小憩'],'13': ['未', '小肠经当令,畅通血管多喝水'],'14': ['未', '小肠经当令,畅通血管多喝水'],'15': ['申', '膀胱经当令,工作学习练身体'],'16': ['申', '膀胱经当令,工作学习练身体'],'17': ['酉', '肾经当令,养经两相宜'],'18': ['酉', '肾经当令,养经两相宜'],'19': ['戌', '心包经当令,心包当令宜散步谈心'],'20': ['戌', '心包经当令,心包当令宜散步谈心'],'21': ['亥', '三焦经当令,温水泡脚助安眠'],'22': ['亥', '三焦经当令,温水泡脚助安眠']
}# 获取当前时间
today = datetime.datetime.today()# 移动一段距离
def skip(distance):  # 移动方法,不留移动痕迹turtle.penup()  # 抬笔不绘制turtle.forward(distance)  # 移动指定距离turtle.pendown()  # 落笔移动绘制def draw_clock_dial():  # 绘制表盘的方法turtle.reset()  # 删除图形归位turtle.hideturtle()  # 隐藏箭头for i in range(60):  # 循环执行60次,一圈为360度所以每一秒的角度为6度skip(160)  # 移动160,相当于表盘圆的半径# 每5秒绘制一个小时刻度if i % 5 == 0:turtle.pensize(7)  # 刻度大小# 画时钟turtle.forward(20)  # 小时刻度的长度为20if i == 0:  # 判断第一个位置为12点# 写入数字12turtle.write(12, align='center', font=('Courier', 14, 'bold'))elif i == 25 or i == 30 or i == 35:  # 5、6、7skip(25)  # 避免与刻度重叠,所以多移动一段距离# 根据i除以5获取,5点、6点、7点并写入对应的数字turtle.write(int(i / 5), align='center', font=('Courier', 14, 'bold'))skip(-25)  # 回到原位置else:# 根据i除以5获取其它时间的数字并写入turtle.write(int(i / 5), align='center', font=('Courier', 14, 'bold'))skip(-20)  # 复原小时刻度的位置else:turtle.pensize(1)  # 将画笔大小设置为1turtle.dot()  # 绘制分钟刻度的小圆点skip(-160)  # 回到中心位置turtle.right(6)  # 向右旋转6度def draw_shichen_clock_dial(shichen):  # 绘制十二时辰表盘的方法today = datetime.datetime.today()forenoon, afternoon = {}, {}for i in shichen.items():if int(i[0]) >= 12:afternoon[i[0]] = i[1]else:forenoon[i[0]] = i[1]# 做个判断,大于12点用后半日时辰if today.hour >= 12:show_shichen_time = afternoonelse:show_shichen_time = forenoonfor i in show_shichen_time.items():  # 循环执行12次,一圈为360度所以每次的角度为30度skip(240)turtle.write(i[1][0], align='center', font=('Courier', 16, 'bold'))skip(-240)  # 回到中心位置turtle.right(30)  # 向右旋转30度def draw_old_clock_dial():  # 绘制表盘的当前时辰和当值经络turtle.hideturtle()  # 隐藏箭头skip(100)turtle.color('red')shichen = get_sc(today.hour)turtle.write('当前:' + shichen[0], align='center', font=('Courier', 16, 'bold'))skip(-380)turtle.write(shichen[1], align='center', font=('Courier', 16, 'bold'))skip(280)  # 回中心点位置# 获取时间对应的具体时辰
def get_sc(hour):shichen = []if hour >= 0:hour = str(hour)shichen.append(dizhi.get(hour)[0] + '时')shichen.append(dizhi.get(hour)[1])else:shichen = '时间参数错误'return shichendef get_week(t):  # 获取星期的方法week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']return week[t.weekday()]  # 返回当天的星期def create_pointer(length, name, color='red'):  # 创建指针方法turtle.reset()  # 删除图形归位skip(-length * 0.1)  # 抬笔移动指定距离turtle.begin_poly()  # 记录多边形turtle.forward(length * 1.1)  # 绘制指定长度的指针turtle.end_poly()  # 停止记录多边形# 注册多边形状turtle.register_shape(name, turtle.get_poly())def init_pointer():  # 初始化指针global secHand, minHand, hurHand, printerturtle.mode("logo")  # 重置Turtle指向上create_pointer(135, "secHand")  # 创建秒针图形create_pointer(110, "minHand")  # 创建分针图形create_pointer(80, "hurHand")  # 创建时针图形secHand = turtle.Turtle()  # 创建秒针turtle对象secHand.shape("secHand")  # 创建指定秒针名称的形状minHand = turtle.Turtle()  # 创建分针turtle对象minHand.shape("minHand")  # 创建指定分针名称的形状hurHand = turtle.Turtle()  # 创建时针turtle对象hurHand.shape("hurHand")  # 创建指定时针名称的形状for hand in secHand, minHand, hurHand:  # 循环遍历三个指针hand.shapesize(1, 1, 5)  # 设置形状拉伸大小和轮廓线hand.speed(0)  # 设置速度为最快printer = turtle.Turtle()  # 创建绘制文字的Turtle对象printer.hideturtle()  # 隐藏箭头printer.penup()  # 抬笔def move_pointer():  # 移动指针的方法# 不停的获取时间t = datetime.datetime.today()second = t.second + t.microsecond * 0.000001  # 计算移动的秒minute = t.minute + second / 60  # 计算移动的分hour = t.hour + minute / 60  # 计算移动的小时secHand.setheading(6 * second)  # 设置秒针的角度minHand.setheading(6 * minute)  # 设置分针的角度hurHand.setheading(30 * hour)  # 设置时针的角度turtle.tracer(False)  # 关闭绘画效果printer.forward(65)  # 向上移动65# 绘制星期printer.write(get_week(t), align="center", font=("Courier", 14, "bold"))printer.back(130)  # 倒退130# 绘制年月日printer.write(t.strftime('%Y-%m-%d'), align="center", font=("Courier", 14, "bold"))printer.home()  # 归位turtle.tracer(True)  # 开启绘画效果turtle.ontimer(move_pointer, 10)  # 10毫秒后调用move_pointer()方法if __name__ == '__main__':turtle.setup(650, 650)  # 创建窗体大小init_pointer()  # 调用初始化指针的方法turtle.tracer(False)  # 关闭绘画效果draw_clock_dial()  # 绘制表盘draw_shichen_clock_dial(dizhi)draw_old_clock_dial()  # 绘制十二时辰表盘move_pointer()  # 调用移动指针的方法turtle.mainloop()  # 不关闭窗体

小案例:基于python的动态时钟,带十二时辰和经络养身相关推荐

  1. 基于python的动态时钟,带十二时辰和经络养身

    仅用来研究学习用 除正常显示时钟外,还可以实时显示当前对应的时辰,和经络养身提示.适合辅助上班族来养生哈 源码如下: ''' 动态时钟附带十二时辰显示 ''' import turtle # 导入绘图 ...

  2. NLP之ASR:基于python和机器学习算法带你玩转的语音实时识别技术

    NLP之ASR:基于python和机器学习算法带你玩转的语音实时识别技术 导读 带你玩转python实现的语音实时识别技术(包括音频混音.回声消除.噪音滤除.杂音消除.静音检测等方法) 视频观看: 软 ...

  3. python做测试小工具_自制快速冒烟测试小工具--基于python多线程(2)

    原标题:自制快速冒烟测试小工具--基于python多线程(2) 新书 速递 文 |愈知愈无知 快速冒烟测试小工具-(1)分析及准备 三.代码实现-封装 1. 创建包和文件夹目录 Config:存放配置 ...

  4. python制作动态时钟_python+pygame制作一个可自定义的动态时钟和详解

    #第1步:导出模块 importsys, random, math, pygamefrom pygame.locals import * from datetime importdatetime, d ...

  5. 用 Python 画动态时钟

    文 | 闲欢 来源:Python 技术「ID: pythonall」 时钟是我们日常生活中最常见的也是必不可少的东西,你有没有想过用 Python 来画一个实时动态的时钟呢?下面我们来看看如何使用简单 ...

  6. python小程序源代码-Python小项目:开发一个动态时钟小程序(附源码)

    importturtlefrom datetime import * #抬起画笔,向前运动一段距离放下 defskip(step): turtle.penup() turtle.forward(ste ...

  7. python动态电子时钟包装_Python小项目:开发一个动态时钟小程序(附源码)

    importturtlefrom datetime import * #抬起画笔,向前运动一段距离放下 defskip(step): turtle.penup() turtle.forward(ste ...

  8. 数据采集与存储案例——基于Python爬虫框架Scrapy的爬取网络数据与MySQL数据持久化

    此案例需要预先安装pymsql python3.7.4 scrapy2.7.1 一.安装scrapy框架 1.使用pip命令安装scrapy pip install scrapy 在这里下载太慢可以使 ...

  9. python归一化改变图像大小_基于Python+PIL-Speed问题的图像强度归一化

    我在业余时间处理一个小问题,包括分析通过显微镜获得的一些图像.它是一个到处都有东西的晶圆,最终我想做一个程序来检测某些材料何时出现. 不管怎样,第一步是将图像的强度标准化,因为镜头不会产生均匀的闪电. ...

最新文章

  1. python中文什么意思-python是什么
  2. 构建高可靠hadoop集群之0-hadoop用户向导
  3. Git 修改分支的名称(亲测)
  4. 19号以后包括数组在内的所有内容(数组、函数、方法、dom操作)
  5. [css] 能不能使用纯css使你的浏览器卡死?怎么实现?
  6. 程序员修复一个bug的心路历程,太形象了
  7. 《马克思主义哲学原理》考点知识串讲-自考
  8. win8下Oracle 12c 创建新用户并分配表空间
  9. Quartus-Modelsim仿真方法
  10. 异速联某客户端无法登陆
  11. android 4.4 hifi,Android系统HiFi手机需要解决什么问题?_音频新闻-中关村在线
  12. uniapp同目录的相对地址_如何修改手机MAC地址?
  13. Hard Link 与 Symbolic Link
  14. 以图搜图源码html,以图搜图功能实现 (源码+解析)
  15. 解决MAC系统升级后虚拟机黑屏问题
  16. 「TYVJ1017」冗余关系
  17. unity 实现了鼠标滚动放大和缩小物体暨拉近拉远相机的效果
  18. Python编程之文本颜色设置
  19. 第53章 SQL GROUP BY 语句教程
  20. 系统辨识理论及MATLAB仿真——学习笔记(1)

热门文章

  1. 2022-01-15 OpenCV(3.4.1) Error: Image step is wrong (The matrix is not continuous, thus its
  2. java 庖丁解牛api_Java 微信支付 APIv3 平台证书的命令行下载工具
  3. CLSR 11.1直接寻址表
  4. Flutter踩坑之flutter doctor --android-licenses报错
  5. CSS3元素闪烁效果
  6. oracle dba培训教程 第九章 创建数据库
  7. CSS3实现对话气泡效果
  8. V8源码边缘试探-黑魔法指针偏移
  9. WordPress一款简约轻快且强大的MDx主题
  10. Kali安装谷歌拼音