python神奇时钟项目_怎么在Python项目中利用Pygame绘制一个时钟
怎么在Python项目中利用Pygame绘制一个时钟
发布时间:2020-11-30 14:24:30
来源:亿速云
阅读:54
作者:Leah
怎么在Python项目中利用Pygame绘制一个时钟?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
功能:
1.初始化界面显示一个时钟界面
2.根据当前的时间实现时针、分针、秒针的移动import pygame, sys, random, math
from datetime import datetime
from pygame.locals import *
def print_text(font, x, y, text, color=(255, 255, 255)):
img_text = font.render(text, True, color)
screen.blit(img_text, (x, y))
pygame.init()
# 屏幕大小
screen = pygame.display.set_mode((600, 500))
# 标题
pygame.display.set_caption("时钟")
# 字体
font1 = pygame.font.Font(None, 24)
# 圆心位置
pos_x = 300
pos_y = 250
# 圆的半径
radius = 250
r = random.randint(0, 255)
g = random.randint(0, 255)
b = random.randint(0, 255)
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
keys = pygame.key.get_pressed()
if keys[K_ESCAPE]:
sys.exit()
screen.fill((0, 0, 100))
color = r, g, b
pygame.draw.circle(screen, color, (pos_x, pos_y), radius, 6)
# 绘制数字1-12
for i in range(1, 13):
angle = math.radians((360 / 12) * i - 90)
x = math.cos(angle) * (radius - 20) - 10
y = math.sin(angle) * (radius - 20) - 10
print_text(font1, pos_x + x, pos_y + y, str(i))
# 绘制时针
hour = datetime.today().hour % 12 # 获取当前时间的小时
hour_angle = math.radians((360 / 12) * hour - 90)
hour_x = math.cos(hour_angle) * (radius - 90)
hour_y = math.sin(hour_angle) * (radius - 90)
pygame.draw.line(screen, (255, 0, 0), (pos_x, pos_y), (pos_x + hour_x, pos_y + hour_y), 12)
# 绘制分针
minutes = datetime.today().minute # 获取当前时间的分钟
minutes_angle = math.radians((360 / 60) * minutes - 90)
minutes_x = math.cos(minutes_angle) * (radius - 70)
minutes_y = math.sin(minutes_angle) * (radius - 70)
pygame.draw.line(screen, (0, 255, 0), (pos_x, pos_y), (pos_x + minutes_x, pos_y + minutes_y), 8)
# 绘制秒针
seconds = datetime.today().second # 获取当前时间的秒数
seconds_angle = math.radians((360 / 60) * seconds - 90)
seconds_x = math.cos(seconds_angle) * (radius - 30)
seconds_y = math.sin(seconds_angle) * (radius - 30)
pygame.draw.line(screen, (0, 0, 255), (pos_x, pos_y), (pos_x + seconds_x, + pos_y + seconds_y), 4)
# 覆盖圆心
pygame.draw.circle(screen, (255, 255, 255), (pos_x, pos_y), 10)
pygame.display.update()
关于怎么在Python项目中利用Pygame绘制一个时钟问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
python神奇时钟项目_怎么在Python项目中利用Pygame绘制一个时钟相关推荐
- python基于opencv的手势识别_怎么在Python3.5 中利用OpenCV实现一个手势识别功能
怎么在Python3.5 中利用OpenCV实现一个手势识别功能 发布时间:2020-12-22 11:56:32 来源:亿速云 阅读:67 作者:Leah 怎么在Python3.5 中利用OpenC ...
- 品达物流TMS项目_第12章 项目总结
品达物流TMS项目_第12章 项目总结 文章目录 品达物流TMS项目_第12章 项目总结 第12章 项目总结 1. 微服务架构 2. 软件架构体系 3. 系统架构 4. 技术架构 5. 业务流程 6. ...
- android canvas 画按钮,Android 用Canvas轻松绘制一个时钟
接下来这篇文章主要是结束如何轻松自定义一个View并使用Canvas绘制一个时钟的案例,话不多说先上图瞅瞅,一共实现了两种效果,一种是秒动(秒针一秒走一针).另一种是连动式的,秒针不会停会一直走动,话 ...
- Canvas绘制一个时钟
Canvas绘制一个时钟 Canvas:一个可以使用脚本(通常为JavaScript)在其中绘制图像的 HTML 元素.它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚至可以进行实时视频处 ...
- 利用widget实现一个时钟功能小插件
利用widget实现一个时钟功能小插件 一般来说 widget 程序由以下部分组成: a. AppWidgetProvider 的实现 b. widget外观布局定义文件 c. widget 参数配 ...
- Android 自定义控件-Canvas和Paint绘图详解-手把手带你绘制一个时钟.
Android - Paint基础 在自定义控件时,经常需要使用canvas.paint等,在canvas类中,绘画基本都是靠drawXXX()方法来完成的,在这些方法中,很多时候都需要用到paint ...
- java和python结合做项目_由浅入深Java+Python结合项目实战
[课程内容] [初级项目:图片社交+电商导购+漂流瓶] 项目实现功能: 用户注册,登录,登出图片的多种上传方式,删除首页图片分类,排序和分页个人页管理图片分享 课程内容: 开发工具和Python语言介 ...
- python实践报告总结_关于开发Python项目的心得总结
最近照着<Python编程从入门到实践>这本书上的内容,开发了第一个完整的Python项目.之前都是用Python写一些脚本什么的,这是第一次开发一个完整的项目,现将在开发过程中的一些心得 ...
- python狗品种识别_卷积神经网络(CNN)项目,给你一个狗的图像,你的算法将会识别并估计狗的品种...
广告:Udacity课程优惠券:邀请码: 67D6DA2E,立减 300 元 项目概述 欢迎来到卷积神经网络(CNN)项目!在这一项目中,你将学到如何建立一个处理现实生活中的,用户提供的图像的算法.给 ...
最新文章
- 1.一步一步移植ucos到stm32f103开发版(修订版)
- 矩阵转置 java_Java 创建矩阵并转置矩阵
- 隐藏1:N关系和工具
- 《北妹》:中国七零后作家的一次火山喷发(答记者问)
- 51nod1600-Simple KMP【SAM,树链剖分】
- Linux 命令平时积累
- pytest-allure测试报告
- Facebook官方出品~时域音频分离模型登GitHub热榜
- Sqlite中文排序
- Mac基础知识:在mac上怎么使用程序坞
- 坑爹的RegExp test()
- 螺钉螺母匹配问题---快速排序
- 4gl程式debug常用技巧
- uvm设计分析——reg
- CVPR2020——D3VO论文阅读
- ASP.NET压力测试
- ant design pro中权限组件Authorized的个人学习
- 子选择器和后代选择器
- 「BTC之城」的奇幻漂流
- 一个非计算机专业的 软考中级 网络工程师考试之路
热门文章
- 利用ResultFilter实现asp.net mvc 页面静态化
- 鬼谷子72术,完整收藏
- flex 颜色16进制对照表
- PLSQL_案例优化系列_明白索引是如何让SQL运行飞快(案例5)
- oracle连接中出现错误ORA-12541,ORA-12514,ORA-01017的解决方法
- 使用git版本管理时的免密问题
- codeblocks调试问题--单步调试遇到breakpoint不停---不能单步调试--运行按钮是灰色但是没有dos窗口...
- Valid Parentheses
- CAFFE(FAQ.2):Ubuntu 配置caffe 框架之数据库读取,错误解决:ImportError: No module named leveldb解决办法...
- IntelliJ IDEA 设置Output (输出窗口)窗口字体大小