鱼C论坛

 找回密码
 立即注册
查看: 92|回复: 1

[作品展示] 指针式钟表代码

[复制链接]
发表于 2025-3-10 11:54:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import pyglet
from datetime import datetime
import math

# 设置窗口大小
window = pyglet.window.Window(width=400, height=400, caption="指针式钟表")

# 定义指针的颜色和长度
HOUR_HAND_LENGTH = 80
MINUTE_HAND_LENGTH = 120
SECOND_HAND_LENGTH = 140
HOUR_HAND_COLOR = (255, 0, 0)
MINUTE_HAND_COLOR = (0, 255, 0)
SECOND_HAND_COLOR = (0, 0, 255)
# 定义钟表中心点
CENTER_X = window.width // 2
CENTER_Y = window.height // 2

def draw_hand(angle, length, width, color):
    """绘制指针"""
    end_x = CENTER_X + length * math.sin(math.radians(angle))
    end_y = CENTER_Y + length * math.cos(math.radians(angle))
    pyglet.shapes.Line(CENTER_X, CENTER_Y, end_x, end_y, width, color).draw()

@window.event
def on_draw():
    window.clear()

    # 获取当前时间
    now = datetime.now()
    hour = now.hour % 12
    minute = now.minute
    second = now.second

    # 计算指针角度
    hour_angle = (hour + minute / 60) * 30  # 每小时30度
    minute_angle = (minute + second / 60) * 6  # 每分钟6度
    second_angle = second * 6  # 每秒6度

    # 绘制指针
    draw_hand(hour_angle, HOUR_HAND_LENGTH, width=6, color=HOUR_HAND_COLOR)  # 时针
    draw_hand(minute_angle, MINUTE_HAND_LENGTH, width=4, color=MINUTE_HAND_COLOR)  # 分针
    draw_hand(second_angle, SECOND_HAND_LENGTH, width=2, color=SECOND_HAND_COLOR)  # 秒针

def update(dt):
    pass

# 每秒更新一次窗口
pyglet.clock.schedule_interval(update, 1)

# 运行程序
pyglet.app.run()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-3-10 11:55:10 | 显示全部楼层
下面是指针式钟表代码,它利用 pyglet 库绘制一个简单的钟表。
import pyglet
from datetime import datetime
import math

# 设置窗口大小
window = pyglet.window.Window(width=400, height=400, caption="指针式钟表")

# 定义指针的颜色和长度
HOUR_HAND_LENGTH = 80
MINUTE_HAND_LENGTH = 120
SECOND_HAND_LENGTH = 140
HOUR_HAND_COLOR = (255, 0, 0)
MINUTE_HAND_COLOR = (0, 255, 0)
SECOND_HAND_COLOR = (0, 0, 255)
# 定义钟表中心点
CENTER_X = window.width // 2
CENTER_Y = window.height // 2

def draw_hand(angle, length, width, color):
    """绘制指针"""
    end_x = CENTER_X + length * math.sin(math.radians(angle))
    end_y = CENTER_Y + length * math.cos(math.radians(angle))
    pyglet.shapes.Line(CENTER_X, CENTER_Y, end_x, end_y, width, color).draw()

@window.event
def on_draw():
    window.clear()

    # 获取当前时间
    now = datetime.now()
    hour = now.hour % 12
    minute = now.minute
    second = now.second

    # 计算指针角度
    hour_angle = (hour + minute / 60) * 30  # 每小时30度
    minute_angle = (minute + second / 60) * 6  # 每分钟6度
    second_angle = second * 6  # 每秒6度

    # 绘制指针
    draw_hand(hour_angle, HOUR_HAND_LENGTH, width=6, color=HOUR_HAND_COLOR)  # 时针
    draw_hand(minute_angle, MINUTE_HAND_LENGTH, width=4, color=MINUTE_HAND_COLOR)  # 分针
    draw_hand(second_angle, SECOND_HAND_LENGTH, width=2, color=SECOND_HAND_COLOR)  # 秒针

def update(dt):
    pass

# 每秒更新一次窗口
pyglet.clock.schedule_interval(update, 1)

# 运行程序
pyglet.app.run()

这个代码创建一个窗体并绘制时钟的三个指针:时针、分针和秒针。每秒钟时钟更新,显示的时间是系统当前时间。确保你的系统上安装了 pyglet 库来运行这个程序。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-2 02:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表