用Python制作动态钟表:实时显示时间的动画

文章目录

    • 引言
    • 准备工作
      • 前置条件
    • 代码实现与解析
      • 导入必要的库
      • 初始化Pygame
      • 绘制钟表函数
      • 主循环
    • 完整代码

在这里插入图片描述

引言

动态钟表是一种直观且实用的UI元素,能够实时显示当前时间。在这篇博客中,我们将使用Python创建一个动态钟表,通过利用Pygame库来实现这一效果。你将看到如何绘制时针、分针和秒针,并使其根据实际时间进行旋转。

准备工作

前置条件

在开始之前,你需要确保你的系统已经安装了Pygame库。如果你还没有安装它,可以使用以下命令进行安装:

pip install pygame

Pygame是一个跨平台的Python模块,用于编写视频游戏。它包括计算机图形和声音库,使得游戏开发更加简单。

代码实现与解析

导入必要的库

我们首先需要导入Pygame库和其他必要的模块:

import pygame
import math
import datetime

初始化Pygame

我们需要初始化Pygame并设置屏幕的基本参数:

pygame.init()
screen = pygame.display.set_mode((600, 600))
pygame.display.set_caption("动态钟表")
clock = pygame.time.Clock()

绘制钟表函数

我们定义几个函数来绘制钟表的各个部分:

def draw_circle(surface, color, center, radius):pygame.draw.circle(surface, color, center, radius, 2)def draw_hand(surface, color, center, angle, length, thickness):end_pos = (center[0] + length * math.cos(angle), center[1] - length * math.sin(angle))pygame.draw.line(surface, color, center, end_pos, thickness)def draw_clock(screen):now = datetime.datetime.now()center = (300, 300)radius = 200# 绘制表盘draw_circle(screen, (0, 0, 0), center, radius)# 绘制时针hour_angle = math.radians((now.hour % 12 + now.minute / 60) * 30 - 90)draw_hand(screen, (0, 0, 0), center, hour_angle, 100, 8)# 绘制分针minute_angle = math.radians(now.minute * 6 - 90)draw_hand(screen, (0, 0, 0), center, minute_angle, 150, 6)# 绘制秒针second_angle = math.radians(now.second * 6 - 90)draw_hand(screen, (255, 0, 0), center, second_angle, 180, 2)

主循环

我们在主循环中更新钟表并绘制:

running = True
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = Falsescreen.fill((255, 255, 255))draw_clock(screen)pygame.display.flip()clock.tick(30)pygame.quit()

完整代码

import pygame
import math
import datetime# 初始化Pygame
pygame.init()
screen = pygame.display.set_mode((600, 600))
pygame.display.set_caption("动态钟表")
clock = pygame.time.Clock()# 绘制钟表函数
def draw_circle(surface, color, center, radius):pygame.draw.circle(surface, color, center, radius, 2)def draw_hand(surface, color, center, angle, length, thickness):end_pos = (center[0] + length * math.cos(angle), center[1] - length * math.sin(angle))pygame.draw.line(surface, color, center, end_pos, thickness)def draw_clock(screen):now = datetime.datetime.now()center = (300, 300)radius = 200# 绘制表盘draw_circle(screen, (0, 0, 0), center, radius)# 绘制时针hour_angle = math.radians((now.hour % 12 + now.minute / 60) * 30 - 90)draw_hand(screen, (0, 0, 0), center, hour_angle, 100, 8)# 绘制分针minute_angle = math.radians(now.minute * 6 - 90)draw_hand(screen, (0, 0, 0), center, minute_angle, 150, 6)# 绘制秒针second_angle = math.radians(now.second * 6 - 90)draw_hand(screen, (255, 0, 0), center, second_angle, 180, 2)# 主循环
running = True
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = Falsescreen.fill((255, 255, 255))draw_clock(screen)pygame.display.flip()clock.tick(30)pygame.quit()

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

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

相关文章

高校搭建AIGC新媒体实验室,创新新闻教育教学模式

高校作为人才培养的重要阵地,必须紧跟时代步伐,不断创新教育教学模式,提升跨界融合育人水平,通过AIGC新媒体实验室探索创新人才培养模式。AIGC新媒体实验室不仅能够高效赋能高校宣传媒体矩阵,也可以助力教学实践与AIGC…

【设计模式】观察者模式(定义 | 特点 | Demo入门讲解)

文章目录 定义结构Demo | 代码Subject目标类Observer抽象观察者观察者1 | CPU监听器观察者2 | 内存监听器客户端 | Client 优点适合场景 定义 所谓观察者模式就是你是被观察的那个对象,你爸爸妈妈就是观察者,一天24h盯着你,一旦你不听话&…

使用requests爬取拉勾网python职位数据

爬虫目的 本文是想通过爬取拉勾网Python相关岗位数据,简单梳理Requests和xpath的使用方法。 代码部分并没有做封装,数据请求也比较简单,所以该项目只是为了熟悉requests爬虫的基本原理,无法用于稳定的爬虫项目。 爬虫工具 这次…

目标和问题:从回溯到动态规划的旅程

目录 引言 题目描述 示例 初步思路:回溯法 回溯法实现 分析 转变思路:动态规划 问题转换 状态定义 状态转移方程 二维动态规划实现 压缩到一维动态规划 一维动态规划实现 详细讲解:从回溯到动态规划的旅程 1. 从回溯到动态规划…

【java计算机毕设】美容院管理系统 项目源代码MySQL springboot vue html maven+文档 前后端可分离也可不分离

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】美容院管理系统 项目源代码MySQL springboot vue html maven文档 前后端可分离也可不分离 2项目介绍 系统功能: 美容院管理系统包括管理员、用户俩种角色。 管理员功能包括个人中心模块用于修改…

YOLO-letter box

最细致讲解yolov8模型推理完整代码--(前处理,后处理) - 博客-中国极客 (chinageek.org) 直接用resize,图片会变形,宽高比会不对 letterbox函数就是把图片弄到想要的大小,保持宽高比,然后少掉的部…

数字媒体技术基础之:DNG 文件

DNG(Digital Negative)文件是一种用于存储原始图像数据的文件格式,由 Adobe Systems 于2004年开发并推广。DNG 是一种开放的、非专利的原始图像格式,旨在为不同相机制造商提供一个统一的存储格式。DNG 文件保存了原始的、未处理的…

【Linux】线程id与互斥(线程三)

上一期我们进行了线程控制的了解与相关操作,但是仍旧有一些问题没有解决 本章第一阶段就是解决tid的问题,第二阶段是进行模拟一个简易线程库(为了加深对于C库封装linux原生线程的理解),第三阶段就是互斥。 目录 线程id…

Python-数据分析组合可视化实例图【附完整源码】

数据分析组合可视化实例图 开篇:应女朋友的要求,于是写下了这篇详细的数据可视化代码及完整注释 一:柱状图、折线图横向组合网格布局 本段代码使用了pyecharts库来创建一个包含多个图表(柱状图、折线图)和网格布局的…

鸿蒙应用更新跳转到应用市场

鸿蒙没有应用下载安装,只支持跳转到应用市场更新 gotoMarket(){try {const request: Want {parameters: {// 此处填入要加载的应用包名,例如: bundleName: "com.huawei.hmsapp.appgallery"bundleName: com.huawei.hmos.maps.app}}…

【NOI-题解】1372. 活动选择1456. 淘淘捡西瓜1485. 接水问题

文章目录 一、前言二、问题问题:1372. 活动选择问题:1456. 淘淘捡西瓜问题:1485. 接水问题 三、感谢 一、前言 本章节主要对贪心问题进行讲解,包括《1372. 活动选择》《1456. 淘淘捡西瓜》《1485. 接水问题》题目。 二、问题 问…

Debian linux安装最新版Cmake

直接sudo apt install camke不是最新版本 卸载cmake sudo apt autoremove cmake下载cmake cmake官网 最上面的是候选版本,往下滑是最新稳定版 解压(改成自己的包) tar -zxvf cmake-3.30.0-rc4.tar.gz进入解压后的文件夹 lscd cmake-3.3…

【项目实践】贪吃蛇

一、游戏效果展示二、博客目标三、使用到的知识四、Win32 API 介绍 4.1 WIn32 API4.2 控制台程序4.3 控制屏幕上的坐标COORD4.4 GetStdHandle4.5 GetConsoleCursorInfo 4.5.1 CONSOLE_CURSOR_INFO 4.6 SetConsoleCursorInfo4.7 SetConsoleCursorPosition4.8 GetAsyncKeyState 五…

Python 项目依赖离线管理 pip + requirements.txt

背景 项目研发环境不支持联网,无法通过常规 pip install 来安装依赖,此时需要在联网设备下载依赖,然后拷贝到离线设备进行本地安装。 两台设备的操作系统、Python 版本尽可能一致。 离线安装依赖 # 在联网设备上安装项目所需的依赖 # -d …

Unity射击游戏开发教程:(29)躲避敌人的子弹射击

在这篇文章中,我将介绍如何创建一个可以使玩家火力无效的敌人。创建的行为如下...... 当玩家向敌人开火时,敌人会向左或向右移动。向左或向右的移动是随机选择的,并在一段时间后停止敌人的移动。如果敌人移出屏幕,它就会绕到另一边。将一个精灵拖到画布上,将其缩小以匹配游…

03.C1W2.Sentiment Analysis with Naïve Bayes

目录 Probability and Bayes’ RuleIntroductionProbabilitiesProbability of the intersection Bayes’ RuleConditional ProbabilitiesBayes’ RuleQuiz: Bayes’ Rule Applied Nave Bayes IntroductionNave Bayes for Sentiment Analysis P ( w i ∣ c l a s s ) P(w_i|clas…

基于RK3588的GMSL、FPDLink 、VByone及MIPI等多种摄像模组,适用于车载、机器人工业图像识别领域

机器人&工业摄像头 针对机器人视觉与工业检测视觉,信迈自主研发和生产GMSL、FPDLink 、VByone及MIPI等多种摄像模组,并为不同应用场景提供多种视场角度和镜头。拥有资深的图像算法和图像ISP专家团队,能够在软件驱动层开发、ISP算法、FPG…

【C#】找不到属性集方法。get只读属性用了反射设置setValue肯定报错

欢迎来到《小5讲堂》 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 背景 找不到属性集方法。get只读属性用了反射设置setValue肯定报错 报错…

ffmpeg下载/配置环境/测试

一、下载 1、访问FFmpeg官方网站下载页面:FFmpeg Download Page; 2、选择适合Windows的版本(将鼠标移动到windows端)。通常,你会找到“Windows builds from gyan.dev”或者“BtbN GitHub Releases”等选项&#xff0…

私域和社群的差别是什么?

社群就是拉很多人建群就可以了,但是私域不是,这里有三点不同 1、私域的用户来源,不仅仅是微信,而是基于一定的联系形成的链接,比如买了商家的货,反复购买觉得好,推荐给亲朋好友的二次开发用户&…