罗马数字动态时钟原理:将动态时钟看作一个圆,划作十二等分,每一等份放一个罗马数字。

import turtle as turtle
import datetime as datetimedef Skip(step):turtle.penup()turtle.forward(step)turtle.pendown()def stiak(name, length):# 注册Turtle形状,建立表针Turtleturtle.reset()  # 清空当前窗口,并重置位置等信息为默认值Skip(-length * 0.1)turtle.begin_poly()turtle.forward(length * 1.1)turtle.end_poly()turtle.handForm = turtle.get_poly()turtle.register_shape(name, turtle.handForm)def Init():global secHand, minHand, hurHand, printerturtle.mode("logo")  # 重置Turtle指向北# 建立三个表针Turtle并初始化stiak("secHand", 135)stiak("minHand", 110)stiak("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)# 建立输出文字Turtleprinter = turtle.Turtle()printer.hideturtle()printer.penup()def SetupClock(radius):# 建立表的外框turtle.reset()turtle.pensize(5)# turtle.begin_fill()# turtle.circle(100, extent=None, steps=None)# turtle.end_fill()list_f = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII']for i in range(60):Skip(radius)if i % 5 == 0:turtle.forward(30)Skip(-radius - 20)# 移动到刻度线终点Skip(radius + 20)#下面是写表盘刻度值,为了不与划线重叠,所以对于特殊位置做了处理# if i == 0:#     turtle.write(list_f[11], align="center", font=("Courier", 14, "bold"))# elif i == 30:#     Skip(25)#     turtle.write(list_f[i/5], align="center", font=("Courier", 14, "bold"))#     Skip(-25)# elif (i == 25 or i == 35):#     Skip(20)#     turtle.write(list_f[i/5], align="center", font=("Courier", 14, "bold"))#     Skip(-20)# else:#     turtle.write(list_f[i/5], align="center", font=("Courier", 14, "bold"))# if i == 0:#     turtle.write(list_f[11], align="center", font=("Courier", 14, "bold"))# elif i == 30:#     Skip(25)#     turtle.write(list_f[i/5], align="center", font=("Courier", 14, "bold"))#     Skip(-25)# elif (i == 25 or i == 35):#     Skip(20)#     turtle.write(list_f[i/5], align="center", font=("Courier", 14, "bold"))#     Skip(-20)# else:#     turtle.write(list_f[i/5], align="center", font=("Courier", 14, "bold"))if i==0 or i==60:df=list_f[11]turtle.write(df)elif i==5:df=list_f[0]turtle.write(df)elif i==10:df = list_f[1]turtle.write(df)elif i==15:df=list_f[2]turtle.write(df)elif i==20:df=list_f[3]turtle.write(df)elif i==25:df=list_f[4]turtle.write(df)elif i==30:df=list_f[5]turtle.write(df)elif i==35:df=list_f[6]turtle.write(df)elif i==40:df=list_f[7]turtle.write(df)elif i==45:df=list_f[8]turtle.write(df)elif i==50:df=list_f[9]turtle.write(df)elif i==55:df=list_f[10]turtle.write(df)# turtle.write(list_f[1])# turtle.write(list_f[2])# turtle.write(list_f[3])# turtle.write(list_f[4])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.yearm = t.monthd = t.dayreturn "%s %d %d" % (y, m, d)def Tick():# 绘制表针的动态显示t = datetime.datetime.today()second = t.second + t.microsecond * 0.000001minute = t.minute + second / 60.0hour = t.hour + minute / 60.0secHand.setheading(6 * second)  # 设置朝向,每秒转动6度minHand.setheading(6 * minute)hurHand.setheading(30 * hour)turtle.tracer(True)  # 不显示绘制的过程,直接显示绘制结果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.back(50)printer.write("稀德出品", align="center",font=("Courier", 14, "bold"))printer.home()turtle.tracer(True)turtle.ontimer(Tick, 1000)  # 1000ms后继续调用tickdef main():turtle.tracer(False)  # 使多个绘制对象同时显示Init()SetupClock(160)turtle.tracer(True)Tick()turtle.mainloop()if __name__ == "__main__":main()

使用python第三方库turtle和datetime来制作动态罗马数字时钟相关推荐

  1. Python第三方库turtle的应用

    目录 前言 1.pip安装turtle库 2.绘图坐标系 3.turtle的画笔控制方法 4.turtle的图形绘制方法 5.简单应用示例 前言 turtle库用于绘制图形的内置函数库.turtle是 ...

  2. Python第三方库turtle画小人发射爱心

    废话不多说直接上代码 import turtle as trdef Mini_people():tr.pensize(3)tr.up()tr.goto(-200, 165) # 脖子坐标tr.down ...

  3. python第三方库numpy-Python第三方库之openpyxl(2)

    Python第三方库之openpyxl(2) 简单的使用 写一个工作簿 >>> from openpyxl importWorkbook>>> from openp ...

  4. 以下用于数据存储领域的python第三方库是-Python 二级选择题

    88.下面代码的输出结果是 ( A ) print(round(0.1 + 0.2,1) == 0.3) A: True B: 0 C: 1 D: False 解释: round 是一个四舍五入的函数 ...

  5. .net 批量更新_痛点:Anaconda3 python第三方库批量安装

    工作中,是不是会一不小心python的IDE环境突然出bug了,崩了,进不去了.烦躁的有时候想重新装一遍IDE环境来解决问题.比如使用anaconda,也是要一个个的去conda安装或者pip安装,安 ...

  6. anaconda python3 安装库_痛点:Anaconda3 python第三方库批量安装

    工作中,是不是会一不小心python的IDE环境突然出bug了,崩了,进不去了.烦躁的有时候想重新装一遍IDE环境来解决问题.比如使用anaconda,也是要一个个的去conda安装或者pip安装,安 ...

  7. Python第三方库资源

    [转载]Python第三方库资源 转自:https://weibo.com/ttarticle/p/show?id=2309404129469920071093 参考:https://github.c ...

  8. 涨知识了!这9个鲜为人知的 Python 第三方库真棒!

    欢迎关注 ,专注 Python.数据分析.数据挖掘.好玩工具! Python 编程充满了机会.它简单明了,拥有许多很酷的库和特色功能,可以使任务变得简单得多.每个 Python 开发人员都必须与热门的 ...

  9. 推荐9个鲜为人知的Python第三方库

    Python 编程充满了机会.它简单明了,拥有许多很酷的库和特色功能,可以使任务变得简单得多.每个 Python 开发人员都必须与热门的第三方库合作,如 NumPy.pandas.datetime等. ...

最新文章

  1. 通过xml 生成html页面,使用xmldom在服务器端生成静态html页面
  2. oracle经典博客,Oracle启动步骤【经典博客】
  3. Andy's First Dictionary
  4. HALCON示例程序class_2dim_unsup.hdev基于二维直方图的聚类分类
  5. 话里话外:流程管理评价的两大要素
  6. 信息学奥赛一本通 1965:【14NOIP普及组】珠心算测验 | 洛谷 P2141 [NOIP2014 普及组] 珠心算测验
  7. nodejs学习---1、命令行和环境变量
  8. 7.Oracle数据库SQL开发之 算术运算
  9. 【计算机图形学】画线算法——Bresenham算法(任意斜率)
  10. 禅道 非内置mysql_禅道
  11. GPRS通信原理+中国移动micro sim 卡,实现经过tcp/ip 传输数据到服务器
  12. LaTex下载与安装教程(一切为了学术~)
  13. 电脑安装Chrome OS
  14. 输出“A、B...Z、AA、AB...AZ、BA、BB...BZ.......”的结构
  15. 标点符号的英语名称翻译
  16. 蓝桥杯算法训练-24点(Python)
  17. 论文笔记2:Deep Attention Recurrent Q-Network
  18. Spring 注解读取配置文件
  19. 蓝牙驱动卸载后自动安装_为什么打印机需要安装驱动后才能使用?
  20. 凸优化 matlab-cvx-第十一章ADVANCED TOPICS

热门文章

  1. 在C++中混编调用CHEMKIN
  2. html如何实现字体重叠,div css每行文字显示一半 同时文字字体重叠显示不全解决方法...
  3. Java 人工智能编程
  4. 利用鹰眼快搜打造个人知识库
  5. 【2020-CVPR-3D人体姿态估计】Deep Kinematics Analysis for Monocular 3D Human Pose Estimation
  6. 数字时代重塑汽车制造业
  7. 使用ISCE+MintPy进行InSAR时间序列的分析(地表形变的提取mintpy)(二)
  8. ES7/ES8新特性总结
  9. 十二星座匹配对象_处女座和十二星座的爱情配对,看看谁是处女座的理想对象?...
  10. 林志玲为何无法挽救都市丽人的遇冷?