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 实现归并排序算法
Jun 05 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 Python
python 3.3 下载固定链接文件并保存的方法
Dec 18 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
Dec 26 Python
Python 监测文件是否更新的方法
Jun 10 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
详解解决Python memory error的问题(四种解决方案)
Aug 08 Python
python IDLE添加行号显示教程
Apr 25 Python
Python闭包与装饰器原理及实例解析
Apr 30 Python
Python中如何添加自定义模块
Jun 09 Python
python字符串的多行输出的实例详解
Jun 08 Python
浅析Python中的随机采样和概率分布
Dec 06 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
smarty中常用方法实例总结
2015/08/07 PHP
PHP文件与目录操作示例
2016/12/24 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
Python只用40行代码编写的计算器实例
2017/05/10 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
python 画条形图(柱状图)实例
2020/04/24 Python
Boda Skins皮衣官网:奢侈皮夹克,全球配送
2016/12/15 全球购物
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
应届毕业生就业自荐信
2013/10/26 职场文书
会计专业毕业生自荐信范文
2013/12/20 职场文书
公司拓展活动方案
2014/02/13 职场文书
买卖协议书范本
2014/04/21 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
Mysql 一主多从的部署
2022/05/20 MySQL