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测试几种方式的区别:所以在我们真正使用的时候不要在方法中…

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…

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

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

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

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

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

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

Java数组详解

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

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

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

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 资料分类 四、数据库设计 五、核心代码 六、论文参考 七、最…

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

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

Python零基础从小白打怪升级中~~~~~~~流程控制语句

第三节&#xff1a;Python的流程控制语法 一、Python条件语句的语法 if 条件1:条件1成立执⾏的代码一条件1成⽴执⾏的代码二...... elif 条件2&#xff1a;条件2成立执⾏的代码三条件2成立执⾏的代码四...... ...... else:以上条件都不成⽴&#xff0c;执行的代码五以上条件都…

axios是什么?axios使用axios和ajax

Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js 环境。它是由 GitHub 用户 mzabriskie 开发的&#xff0c;并且得到了广泛的社区支持。Axios 的设计目标是提供一种简洁、易用且功能强大的 HTTP 请求方式&#xff0c;以替代传统的 Ajax&#xff08;A…

【深入理解Java IO流0x03】解读Java最基本的IO流之字节流InputStream、OutputStream

在开始前&#xff0c;我们再来回顾一下这张图&#xff1a; 本篇博客主要为大家讲解字节流。 我们都知道&#xff0c;一切文件&#xff08;文本、视频、图片&#xff09;的数据都是以二进制的形式存储的&#xff0c;传输时也是。所以&#xff0c;字节流可以传输任意类型的文件数…

2.动态库与静态库

1.库的制作 库文件是计算机上的一类文件&#xff0c;可以将库文件看做是一种代码仓库。它提供给使用者一些可以直接拿来用的变量&#xff0c;函数或类。库是一种特殊的程序&#xff0c;但是库是不能单独运行的。 库文件有两种&#xff1a;静态库和动态库 静态库: GCC进行链接…

Jackson 各种注解使用示例

参考资料 Jackson使い方メモ 目录 一. JsonIgnore二. JsonIgnoreProperties三. JsonProperty3.1 作用于entity属性上&#xff0c;指定json对象属性名3.2 作用于entity方法上&#xff0c;指定json对象属性名 四. JsonFormat4.1 日期格式化4.2 数字格式化4.3 枚举类返回code 五.…

Open CASCADE学习|平面上的PCurve

曲面上的曲线PCurve&#xff0c;字面上理解即为参数曲线(Parametric Curve)。在几何建模中&#xff0c;PCurve通常被描述为附加在参数曲面之间公共边上的数据结构。从更具体的定义来看&#xff0c;当给定一个曲面方程&#xff0c;并且其参数u和v是另一个参数t的函数时&#xff…

Redis数据库的简介、部署及常用命令

关系数据库与非关系型数据 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。sQL语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型数据库的语言&#xff0c…

HarmonyOS NEXT应用开发之Environment:设备环境查询

开发者如果需要应用程序运行的设备的环境参数&#xff0c;以此来作出不同的场景判断&#xff0c;比如多语言&#xff0c;暗黑模式等&#xff0c;需要用到Environment设备环境查询。 Environment是ArkUI框架在应用程序启动时创建的单例对象。它为AppStorage提供了一系列描述应用…

wireshark抓包新手使用教程

Wireshark是非常流行的网络封包分析软件&#xff0c;可以截取各种网络数据包&#xff0c;并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括&#xff1a; 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学…

20万就想买智能驾驶汽车?!我给你找到了三款车

文 | AUTO芯球 作者 | 雷歌 我都不敢相信&#xff0c;智能驾驶的车型已经这么便宜啦&#xff01; 一年多前&#xff0c;我一个前同事大冤种&#xff0c;还另掏3万多买某个造车新势力品牌的智驾包呢。 现在动不动就全给你标配了。 近的就说刚刚发布的小米SU7标准版&#xf…