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的线程来解决生产者消费问题的示例
Apr 02 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
Aug 07 Python
Python实现PS图像明亮度调整效果示例
Jan 23 Python
python自动12306抢票软件实现代码
Feb 24 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
Django cookie和session的应用场景及如何使用
Apr 29 Python
Python中X[:,0]和X[:,1]的用法
May 10 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
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
python实现的简单抽奖系统实例
2015/05/22 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
Python3几个常见问题的处理方法
2019/02/26 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
Python Merge函数原理及用法解析
2020/09/16 Python
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
求职简历中自我评价
2014/01/28 职场文书
法人身份证明书
2014/10/08 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
三八节活动主持词
2015/07/04 职场文书
争做文明公民倡议书
2019/06/24 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android
Mysql中常用的join连接方式
2022/05/11 MySQL