Python使用Pygame绘制时钟
作者:浩瀚蓝天dep 发布时间:2022-08-04 14:10:07
标签:python,pygame,时钟
本文实例为大家分享了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()
运行结果:
来源:https://blog.csdn.net/LSW_JAVADP/article/details/110295573


猜你喜欢
- 最近发现各大类库都能利用div.innerHTML=HTML片断来生成节点元素,再把它们插入到目标元素的各个位置上。这东西实际上就是inse
- 问:把数据从MySQL迁移到Oracle需要注意些什么?答:以下是MySQL迁到Oracle需要掌握的注意事项,希望对你有所帮助。1.自动增
- 概述Object.freeze(obj)可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删
- 本文实例为大家分享了python3磁盘空间监控的具体代码,供大家参考,具体内容如下软硬件环境python3apscheduler前言在做频繁
- 在安装好MYSQL ODBD的驱动程序后,应如何建立ASP文件连接数据库?我们有两种方法:一种是在ODBC数据源中建立一个DSN。具体方法是
- optimizer.param_groups: 是长度为2的list,其中的元素是2个字典;optimizer.param_groups[0
- 本文实例讲述了Python统计文件中去重后uuid个数的方法。分享给大家供大家参考。具体如下:利用正则表达式按行获取日志文件中的的uuid,
- 前言最近遇到了一个问题:我的server和client不是在一个时区,server时区是EDT,即美国东部时区,client,就是我自己的电
- 索引并不是时时都会生效的,比如以下几种情况,将导致索引失效:如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因
- 本文实例讲述了Python实现读取文件最后n行的方法。分享给大家供大家参考,具体如下:# -*- coding:utf8-*-import
- 持久化文件读写:f=open('info.txt','a+')f.seek(0)str1=f.read()i
- 前言SQL Server使用TRY...CATCH 结构实现TSQL语句的错误处理,TRY命令负责监控语句执行的情况,如果有TSQL语句发生
- 1.语法规则1-1 代码实例sorted(iterable, key=None,reverse=False)1-2 参数说明(1)itera
- tkinter 是 Python 的标准 GUI 库。Python 使用 tkinter 可以快速的创建 GUI 应用程序。由于 tkint
- 本文实例讲述了Python类的继承、多态及获取对象信息操作。分享给大家供大家参考,具体如下:继承类的继承机制使得子类可以继承父类中定义的方法
- 第一种,也是我最常用的,第一帧里加上这个比较灵活,想要自定义加入菜单,只要定义drMenu这个对象就可以了var drMenu&n
- 在my.cnf中设置了sql_mode='STRICT_TRANS_TABLES';却发现还是有非法数据的写入,比如无符号整
- YUI Compressor 压缩 JavaScript 的内容包括:移除注释移除额外的空格细微优化标识符替换(Identifier Rep
- 哪行哪业都少不了基本功,都说“马步”要扎得稳。在都快说烂了的以目标用户为中心设计的今天,还是要勤练基本功的。不多说了,先了解下“设计的3个C
- 从某种意义上来说,页面设计(web设计)也就是用户界面设计。有许多技巧可以帮助我们制作出漂亮、实用的界面,这里收集的5个小技巧就会对你有所帮