Python使用Pygame绘制时钟


Posted in Python onNovember 29, 2020

本文实例为大家分享了Python使用Pygame绘制时钟的具体代码,供大家参考,具体内容如下

前提条件:

需要安装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读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
解决Python运行文件出现out of memory框的问题
Dec 03 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
Python选择网卡发包及接收数据包
Apr 04 Python
Python3中的bytes和str类型详解
May 02 Python
python射线法判断一个点在图形区域内外
Jun 28 Python
使用python打印十行杨辉三角过程详解
Jul 10 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
Pandas读取csv时如何设置列名
Jun 02 Python
Python3.9.1中使用match方法详解
Feb 08 Python
Elasticsearch 索引操作和增删改查
Apr 19 Python
详解pandas赋值失败问题解决
Nov 29 #Python
python 获取剪切板内容的两种方法
Nov 28 #Python
快速创建python 虚拟环境
Nov 28 #Python
Python基于Webhook实现github自动化部署
Nov 28 #Python
Django-simple-captcha验证码包使用方法详解
Nov 28 #Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 #Python
python 用Matplotlib作图中有多个Y轴
Nov 28 #Python
You might like
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
php制作简单模版引擎
2016/04/07 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
PHP实现微信退款功能
2018/10/02 PHP
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
vue弹出框组件封装实例代码
2019/10/31 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
python zip文件 压缩
2008/12/24 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
Python实现的字典值比较功能示例
2018/01/08 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
python的继承知识点总结
2018/12/10 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
小学敬老月活动方案
2014/02/11 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python