python小项目——时钟模拟

钟表是一种计时的装置,也是计量和指示时间的精密仪器。钟表的样式千变万化,但是用来显示时间的表盘相差无几,大多数钟表表盘的样式由刻度(共60个,围成圆形)、指针(时针、分针和秒针)、周日期显示和日期显示组成。

图列:

在这里插入图片描述


实现时钟模拟:

使用python内置模块:

# 导入包
import turtle as tl
from datetime import *

1. 将画笔移动到指定的距离

def skip(step):"""将画笔移动到指定的距离:param step:画笔移动的长度:return:无返回值"""tl.penup()         # 抬起画笔tl.forward(step)   # 移动画笔tl.pendown()       # 落下画笔

2. 绘制钟表刻度

def setip_clock(radius):'''建立钟表的外框:param radius::return:'''tl.reset()          # 重置turtle绘图环境到初始状态(清空画布)tl.pensize(7)       # 设置画笔线条的粗细for i in range(60):skip(radius)    # 在距离圆形为r的位置落笔if i %5==0:     # 若能整除5,则画一条短直线tl.forward(20)   # 正方向画20像素skip(-radius-20) # 反方向画20像素else:tl.dot(5)   #绘制一个圆心点(直径为5)skip(-radius)tl.right(6)

3. 注册turtle形状,建立名字为name的形状

def make_hand(name,length):'''注册turtle形状,建立名字为name的形状:param name:指针名称:param length:指针长度:return:'''tl.reset()skip(-0.1*length)# 开始记录多边形的顶点tl.begin_poly()tl.forward(1.1*length)# 停止记录多边形的顶点,并与第一个顶点相连tl.end_poly()# 返回最后记录的多边形handForm=tl.get_poly()# 注册形状,命名为nametl.register_shape(name,handForm)

4. 程序初始化设置,包括绘制三个表针,日期显示和周日

def init():# 设置全局变量global secHand,minHand,hurHand,printer# 重置turtle指针向北tl.mode("logo")# 建立三个表针Turtle并初始化secHand=tl.Turtle()make_hand("secHand",125) # 秒针secHand.shape("secHand")minHand=tl.Turtle()make_hand("minHand",130) #分针minHand.shape("minHand")hurHand=tl.Turtle()make_hand("hurHand",90) # 时针hurHand.shape("hurHand")for hand in secHand,minHand,hurHand:hand.shapesize(1,1,3) # 调整三根指针的粗细hand.speed(0)         # 设置移动速度# 建立并输出文字的turtrlprinter=tl.Turtle()printer.hideturtle()printer.penup()

5. 以指定的格式返回周日日期

def week(d):week=["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]return week[d.weekday()]

6. 以指定的格式返回日期

def day(d):return "%s %d %d" %(d.year,d.month,d.day)

7. 实现钟表动态设置


def tick():"""绘制钟表的动态显示:return:"""# 获取本地时间,使用类成员d=datetime.today()second=d.second+d.microsecond*0.000001minute=d.minute+d.second/60.0hour=d.hour+d.minute/60.0# 将画笔的方向设置为to_angle参数secHand.setheading(second*6)minHand.setheading(minute*6)hurHand.setheading(hour*30)tl.tracer(False)printer.fd(70)  # 向前移动指定的距离# 根据对齐(”左“,”中“,”右“)和给的那个字体,在当前龟位置写入文本printer.write(week(d),align="center",font=("Courier",14,"bold"))printer.back(130)printer.write(day(d),align="center",font=("Courier",14,"bold"))# 将位置和方向恢复到初始状态,位置初始坐标位(0,0)# 方向初始位:”standard“ 模式为right向右即东,# logo 模式是up向上即北printer.home()tl.tracer(True)tl.ontimer(tick,100)  # 计时器,100ms后继续调用tick

8. 主函数

def main():# 关闭绘画追踪,可以用于加速绘画复杂图形tl.tracer(False)init()# 画表框setip_clock(200)# 开启动画tl.tracer(True)tick()# 启动时间循环,开始接收鼠标的和键盘的操作tl.done()# 测试
if __name__ == '__main__':main()

图形化界面:

在这里插入图片描述


想了解模块的导入可看:python异常的捕捉与包
想了解turtle包可看:Python 常用内置库 time库、random库、turtle库
欢迎大家观看本期作品,希望本期作品可以帮助大家!
无论是学习还生活都是带着星星的(希望的星✨),大家一起加油吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot中这样用ObjectMapper,才够优雅!

目录 背景步骤在SpringBoot项目中要实现对象与Json字符串的互转,每次都需要像如下一样new 一个ObjectMapper对象:这样的代码到处可见,有问题吗?我们要使用jmh测试几种方式的区别:所以在我们真正使用的时候不要在方法中…

JavaScript 书写位置

JS 分为三种使用方法,分别为行内,内嵌,外部。 行内式(不推荐使用) 行内就是 将 JS 代码直接写在 HTML 标签上 ,这种方式的结构、行为分离不够彻底,不利于后 期维护,复用性不强…

2024年3月30日~2024年4月7日周报

文章目录 一、前言二、创意收集2.1 多任务学习2.1.1 多任务学习的定义与优势2.1.2 多任务学习的分类 2.2 边缘检测2.2.1 基础理论2.2.2 sobel代码介绍2.2.3 canny代码介绍 三、《地震速度模型超分辨率的多任务学习》3.1 M-RUDSR架构3.2 详细介绍3.3 实验设置 四、实验五、小结5…

揭秘程序员面试技巧,助你轻松拿offer!

上文 程序员面试是求职者展现自身技术实力、沟通能力和职业素养的关键环节。为了在面试中脱颖而出,求职者需要掌握一些实用的面试技巧。以下将详细阐述程序员面试技巧,助您在面试中取得更好的成绩。 一、面试前准备 了解公司及职位 在面试前&#xff0…

操作系统与编程系列专栏(一):导言

在一间充满了键盘敲击声和低语讨论的办公室内,两位资深程序员,老马和老王,围绕着一个永恒的话题展开了讨论。他们的对话不仅引发了思考,也为那些在软件开发道路上前行的人提供了不少启示。 老马:“我觉得深入了解操作系…

【leetcode面试经典150题】18.整数转罗马数字(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

【LeetCode题解】2009. 使数组连续的最少操作数

文章目录 [2009. 使数组连续的最少操作数](https://leetcode.cn/problems/minimum-number-of-operations-to-make-array-continuous/)思路:一、排序去重滑动窗口代码: 2009. 使数组连续的最少操作数 思路:一、排序去重滑动窗口 1.对数组进行…

C语言代码块及块级作用域

代码块 所谓代码块,就是由{ }包围起来的代码。代码块在C语言中随处可见,例如函数体、选择结构、循环结构等。不包含代码块的C语言程序根本不能运行,即使最简单的C语言程序也要包含代码块。C语言允许在代码块内部定义变量,这样的变…

P8794 [蓝桥杯 2022 国 A] 环境治理

P8794 [蓝桥杯 2022 国 A] 环境治理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <iostream> using namespace std; #define ll long long const int N150; const int inf0x7fffffff; int n,q; int d[N][N],l[N][N]; int t[N][N]; void floyd() {for(int k0…

nandgame中的asm编程 Escape Labyrinth(逃离迷宫)

先翻译题目&#xff1a; 逃离迷宫计算机被困在火星上的迷宫中。编写一个程序&#xff0c;让它逃离迷宫。计算机配备了连接的轮子和前方障碍物探测器。与轮子和探测器的输入/输出是内存映射在地址7FFF上&#xff1a;对外设的输出信号&#xff1a; 位 设置为1代表&#xff1a; 2…

UE4_动画基础_ 使用分层动画(Using Layered Animations)

完成在移动过程中武器发射的角色制作&#xff01; 动画混合仅仅意味着在一个角色或骨架网格体上的两个或多个动画之间进行平滑过渡。在虚幻引擎4中&#xff0c;有多种方法可以应用这种混合&#xff0c;要么通过混合空间&#xff0c;或通过实际组合两个基于加权偏差或alpha值的…

C语言的数组

一、数组的赋值 对单个元素赋值 int a[3]; a[0] 3; a[1] 100; a[2] 34;整体赋值&#xff08;不指明数组长度&#xff09; float b[] { 23.3, 100.00, 10, 0.34 };整体赋值&#xff08;指明数组长度&#xff09; int m[10] { 100, 30, 234 };字符数组赋值 char str1[] &qu…

Java数组详解

​TOC 第一章、数组的概念介绍 1.1&#xff09;数组的概念 ①数组就是用来储存数据的容器,可以存储同一种类型的数据&#xff0c;是同一种数据类型的集合。实现对这些数据的统一管理。如果数组中存储的是基本类型数据&#xff0c;我就不能往里面存引用类型数据。数组中存储的…

全量知识系统 程序详细设计 “三次演算” 再探(QA)之1 (百度文库)

说明&#xff1a;以下关于全知系统中程序详细设计的沟通是基于今天正在完成中的全量知识系统 程序详细设计之“命名法” “正文”的" 前言" 之1 “前提”篇 中提出的所有程序要求的基础上的。 Q1.这些规则 在程序被设计为 λ表达式的三个转换规则&#xff0c;分别适…

CLIPSeg如果报“目标计算机积极拒绝,无法连接。”怎么办?

CLIPSeg这个插件在使用的时候&#xff0c;偶尔会遇到以下报错&#xff1a; Error occurred when executing CLIPSeg: (MaxRetryError("HTTPSConnectionPool(hosthuggingface.co, port443): Max retries exceeded with url: /CIDAS/clipseg-rd64-refined/resolve/main/toke…

【前端】深度选择器

升级vue2项目到vue3时候发现 the >>> and /deep/ combinators have been deprecated. Use :deep() instead.这是因为项目使用的 css 扩展语言是 dart-sass&#xff0c;不支持 /deep/ &#xff08;less/node-sass&#xff09;和 >>>&#xff08;css&#xff0…

14届蓝桥杯 C/C++ B组 T5 接龙排序 (最长上升子序列DP+优化)

不难发现这是一个LIS问题&#xff0c;但是如果直接套用LIS的模版&#xff0c;在数据范围到达 1 e 5 1e5 1e5 的情况下&#xff0c;就只能够得到一半的分数&#xff0c;所以我们需要对其进行优化。 首先给出暴力的代码&#xff1a; #include<iostream> using namespace…

知识管理系统|基于Springboot和vue的知识管理系统设计与实现(源码+数据库+文档)

知识管理 目录 基于Springboot和vue的知识管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、前台&#xff1a; 5.2.2 文章信息 5.3.1 论坛交流 2、后台 用户管理 5.1.2 文章分类 5.2.1 资料分类 四、数据库设计 五、核心代码 六、论文参考 七、最…

Python模拟退火算法

模拟退火算法&#xff08;Simulated Annealing, SA&#xff09;是一种启发式搜索算法&#xff0c;用于在一个大的搜索空间中寻找问题的近似全局最优解。它受到物理退火过程的启发&#xff0c;通过模拟物理退火过程中的冷却来逐步减少搜索空间&#xff0c;并在一定概率下接受劣解…

2024年上半年WSK-PETS5报名及考试时间公布

4月1日&#xff0c;中国教育考试网发布了2024年上半年全国外语水平考试WSK&#xff08;PETS5&#xff09;的报名及考试通知&#xff0c;为方便关注者&#xff0c;知识人网小编特做全文转载。 国家公派留学人员全国外语水平考试&#xff08;WSK-PETS5&#xff09;成绩作为国家留…