鱼C论坛

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

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

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

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

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

x
  1. import pyglet
  2. from datetime import datetime
  3. import math

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

  6. # 定义指针的颜色和长度
  7. HOUR_HAND_LENGTH = 80
  8. MINUTE_HAND_LENGTH = 120
  9. SECOND_HAND_LENGTH = 140
  10. HOUR_HAND_COLOR = (255, 0, 0)
  11. MINUTE_HAND_COLOR = (0, 255, 0)
  12. SECOND_HAND_COLOR = (0, 0, 255)
  13. # 定义钟表中心点
  14. CENTER_X = window.width // 2
  15. CENTER_Y = window.height // 2

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

  21. @window.event
  22. def on_draw():
  23.     window.clear()

  24.     # 获取当前时间
  25.     now = datetime.now()
  26.     hour = now.hour % 12
  27.     minute = now.minute
  28.     second = now.second

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

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

  37. def update(dt):
  38.     pass

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

  41. # 运行程序
  42. pyglet.app.run()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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


  1. import pyglet
  2. from datetime import datetime
  3. import math

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

  6. # 定义指针的颜色和长度
  7. HOUR_HAND_LENGTH = 80
  8. MINUTE_HAND_LENGTH = 120
  9. SECOND_HAND_LENGTH = 140
  10. HOUR_HAND_COLOR = (255, 0, 0)
  11. MINUTE_HAND_COLOR = (0, 255, 0)
  12. SECOND_HAND_COLOR = (0, 0, 255)
  13. # 定义钟表中心点
  14. CENTER_X = window.width // 2
  15. CENTER_Y = window.height // 2

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

  21. @window.event
  22. def on_draw():
  23.     window.clear()

  24.     # 获取当前时间
  25.     now = datetime.now()
  26.     hour = now.hour % 12
  27.     minute = now.minute
  28.     second = now.second

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

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

  37. def update(dt):
  38.     pass

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

  41. # 运行程序
  42. pyglet.app.run()
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-5 19:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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