怎么在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绘制一个时钟相关推荐

  1. python基于opencv的手势识别_怎么在Python3.5 中利用OpenCV实现一个手势识别功能

    怎么在Python3.5 中利用OpenCV实现一个手势识别功能 发布时间:2020-12-22 11:56:32 来源:亿速云 阅读:67 作者:Leah 怎么在Python3.5 中利用OpenC ...

  2. 品达物流TMS项目_第12章 项目总结

    品达物流TMS项目_第12章 项目总结 文章目录 品达物流TMS项目_第12章 项目总结 第12章 项目总结 1. 微服务架构 2. 软件架构体系 3. 系统架构 4. 技术架构 5. 业务流程 6. ...

  3. android canvas 画按钮,Android 用Canvas轻松绘制一个时钟

    接下来这篇文章主要是结束如何轻松自定义一个View并使用Canvas绘制一个时钟的案例,话不多说先上图瞅瞅,一共实现了两种效果,一种是秒动(秒针一秒走一针).另一种是连动式的,秒针不会停会一直走动,话 ...

  4. Canvas绘制一个时钟

    Canvas绘制一个时钟 Canvas:一个可以使用脚本(通常为JavaScript)在其中绘制图像的 HTML 元素.它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚至可以进行实时视频处 ...

  5. 利用widget实现一个时钟功能小插件

    利用widget实现一个时钟功能小插件 一般来说 widget 程序由以下部分组成: a. AppWidgetProvider 的实现  b. widget外观布局定义文件 c. widget 参数配 ...

  6. Android 自定义控件-Canvas和Paint绘图详解-手把手带你绘制一个时钟.

    Android - Paint基础 在自定义控件时,经常需要使用canvas.paint等,在canvas类中,绘画基本都是靠drawXXX()方法来完成的,在这些方法中,很多时候都需要用到paint ...

  7. java和python结合做项目_由浅入深Java+Python结合项目实战

    [课程内容] [初级项目:图片社交+电商导购+漂流瓶] 项目实现功能: 用户注册,登录,登出图片的多种上传方式,删除首页图片分类,排序和分页个人页管理图片分享 课程内容: 开发工具和Python语言介 ...

  8. python实践报告总结_关于开发Python项目的心得总结

    最近照着<Python编程从入门到实践>这本书上的内容,开发了第一个完整的Python项目.之前都是用Python写一些脚本什么的,这是第一次开发一个完整的项目,现将在开发过程中的一些心得 ...

  9. python狗品种识别_卷积神经网络(CNN)项目,给你一个狗的图像,你的算法将会识别并估计狗的品种...

    广告:Udacity课程优惠券:邀请码: 67D6DA2E,立减 300 元 项目概述 欢迎来到卷积神经网络(CNN)项目!在这一项目中,你将学到如何建立一个处理现实生活中的,用户提供的图像的算法.给 ...

最新文章

  1. 1.一步一步移植ucos到stm32f103开发版(修订版)
  2. 矩阵转置 java_Java 创建矩阵并转置矩阵
  3. 隐藏1:N关系和工具
  4. 《北妹》:中国七零后作家的一次火山喷发(答记者问)
  5. 51nod1600-Simple KMP【SAM,树链剖分】
  6. Linux 命令平时积累
  7. pytest-allure测试报告
  8. Facebook官方出品~时域音频分离模型登GitHub热榜
  9. Sqlite中文排序
  10. Mac基础知识:在mac上怎么使用程序坞
  11. 坑爹的RegExp test()
  12. 螺钉螺母匹配问题---快速排序
  13. 4gl程式debug常用技巧
  14. uvm设计分析——reg
  15. CVPR2020——D3VO论文阅读
  16. ASP.NET压力测试
  17. ant design pro中权限组件Authorized的个人学习
  18. 子选择器和后代选择器
  19. 「BTC之城」的奇幻漂流
  20. 一个非计算机专业的 软考中级 网络工程师考试之路

热门文章

  1. 利用ResultFilter实现asp.net mvc 页面静态化
  2. 鬼谷子72术,完整收藏
  3. flex 颜色16进制对照表
  4. PLSQL_案例优化系列_明白索引是如何让SQL运行飞快(案例5)
  5. oracle连接中出现错误ORA-12541,ORA-12514,ORA-01017的解决方法
  6. 使用git版本管理时的免密问题
  7. codeblocks调试问题--单步调试遇到breakpoint不停---不能单步调试--运行按钮是灰色但是没有dos窗口...
  8. Valid Parentheses
  9. CAFFE(FAQ.2):Ubuntu 配置caffe 框架之数据库读取,错误解决:ImportError: No module named leveldb解决办法...
  10. IntelliJ IDEA 设置Output (输出窗口)窗口字体大小