使用python第三方库turtle和datetime来制作动态罗马数字时钟
罗马数字动态时钟原理:将动态时钟看作一个圆,划作十二等分,每一等份放一个罗马数字。
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来制作动态罗马数字时钟相关推荐
- Python第三方库turtle的应用
目录 前言 1.pip安装turtle库 2.绘图坐标系 3.turtle的画笔控制方法 4.turtle的图形绘制方法 5.简单应用示例 前言 turtle库用于绘制图形的内置函数库.turtle是 ...
- Python第三方库turtle画小人发射爱心
废话不多说直接上代码 import turtle as trdef Mini_people():tr.pensize(3)tr.up()tr.goto(-200, 165) # 脖子坐标tr.down ...
- python第三方库numpy-Python第三方库之openpyxl(2)
Python第三方库之openpyxl(2) 简单的使用 写一个工作簿 >>> from openpyxl importWorkbook>>> from openp ...
- 以下用于数据存储领域的python第三方库是-Python 二级选择题
88.下面代码的输出结果是 ( A ) print(round(0.1 + 0.2,1) == 0.3) A: True B: 0 C: 1 D: False 解释: round 是一个四舍五入的函数 ...
- .net 批量更新_痛点:Anaconda3 python第三方库批量安装
工作中,是不是会一不小心python的IDE环境突然出bug了,崩了,进不去了.烦躁的有时候想重新装一遍IDE环境来解决问题.比如使用anaconda,也是要一个个的去conda安装或者pip安装,安 ...
- anaconda python3 安装库_痛点:Anaconda3 python第三方库批量安装
工作中,是不是会一不小心python的IDE环境突然出bug了,崩了,进不去了.烦躁的有时候想重新装一遍IDE环境来解决问题.比如使用anaconda,也是要一个个的去conda安装或者pip安装,安 ...
- Python第三方库资源
[转载]Python第三方库资源 转自:https://weibo.com/ttarticle/p/show?id=2309404129469920071093 参考:https://github.c ...
- 涨知识了!这9个鲜为人知的 Python 第三方库真棒!
欢迎关注 ,专注 Python.数据分析.数据挖掘.好玩工具! Python 编程充满了机会.它简单明了,拥有许多很酷的库和特色功能,可以使任务变得简单得多.每个 Python 开发人员都必须与热门的 ...
- 推荐9个鲜为人知的Python第三方库
Python 编程充满了机会.它简单明了,拥有许多很酷的库和特色功能,可以使任务变得简单得多.每个 Python 开发人员都必须与热门的第三方库合作,如 NumPy.pandas.datetime等. ...
最新文章
- 通过xml 生成html页面,使用xmldom在服务器端生成静态html页面
- oracle经典博客,Oracle启动步骤【经典博客】
- Andy's First Dictionary
- HALCON示例程序class_2dim_unsup.hdev基于二维直方图的聚类分类
- 话里话外:流程管理评价的两大要素
- 信息学奥赛一本通 1965:【14NOIP普及组】珠心算测验 | 洛谷 P2141 [NOIP2014 普及组] 珠心算测验
- nodejs学习---1、命令行和环境变量
- 7.Oracle数据库SQL开发之 算术运算
- 【计算机图形学】画线算法——Bresenham算法(任意斜率)
- 禅道 非内置mysql_禅道
- GPRS通信原理+中国移动micro sim 卡,实现经过tcp/ip 传输数据到服务器
- LaTex下载与安装教程(一切为了学术~)
- 电脑安装Chrome OS
- 输出“A、B...Z、AA、AB...AZ、BA、BB...BZ.......”的结构
- 标点符号的英语名称翻译
- 蓝桥杯算法训练-24点(Python)
- 论文笔记2:Deep Attention Recurrent Q-Network
- Spring 注解读取配置文件
- 蓝牙驱动卸载后自动安装_为什么打印机需要安装驱动后才能使用?
- 凸优化 matlab-cvx-第十一章ADVANCED TOPICS
热门文章
- 在C++中混编调用CHEMKIN
- html如何实现字体重叠,div css每行文字显示一半 同时文字字体重叠显示不全解决方法...
- Java 人工智能编程
- 利用鹰眼快搜打造个人知识库
- 【2020-CVPR-3D人体姿态估计】Deep Kinematics Analysis for Monocular 3D Human Pose Estimation
- 数字时代重塑汽车制造业
- 使用ISCE+MintPy进行InSAR时间序列的分析(地表形变的提取mintpy)(二)
- ES7/ES8新特性总结
- 十二星座匹配对象_处女座和十二星座的爱情配对,看看谁是处女座的理想对象?...
- 林志玲为何无法挽救都市丽人的遇冷?