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 字符串操作方法大全
Mar 11 Python
Python中splitlines()方法的使用简介
May 20 Python
python学生信息管理系统
Mar 13 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
Python3实现的判断回文链表算法示例
Mar 08 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
Jun 26 Python
Python 使用list和tuple+条件判断详解
Jul 30 Python
Django接收post前端返回的json格式数据代码实现
Jul 31 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
django rest framework serializer返回时间自动格式化方法
Mar 31 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
10个python爬虫入门实例(小结)
Nov 01 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
php横向重复区域显示二法
2008/09/25 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
PDO::prepare讲解
2019/01/29 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
2013/11/19 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
python如何生成网页验证码
2018/07/28 Python
值得收藏的10道python 面试题
2019/04/15 Python
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
web字体加载方案优化小结
2019/11/29 HTML / CSS
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
如何用PHP实现邮件发送
2012/12/26 面试题
大学生专业个人学习的自我评价
2013/10/26 职场文书
网络管理员岗位职责
2014/03/17 职场文书
《九寨沟》教学反思
2014/04/08 职场文书
服装发布会策划方案
2014/05/22 职场文书
艺术节开幕词
2015/01/28 职场文书
员工升职自荐信
2015/03/27 职场文书
圣诞晚会主持词
2015/07/01 职场文书
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
MySQL创建管理KEY分区
2022/04/13 MySQL