神器时钟程序文档

时钟应用程序文档

本文档介绍了一个简单的时钟应用程序的代码和功能。

功能

该时钟应用程序具有以下功能:

  • 显示当前时间,包括时、分、秒和十分之秒。
  • 显示当前日期。
  • 可以切换数显功能,即在屏幕上显示日期和时间。
  • 可以播放音乐,并且可以切换音乐的播放状态。

环境要求

运行此应用程序需要安装以下依赖库:

  • simpleguitk:用于创建图形用户界面。
  • math:用于数学计算。
  • datetime:用于获取当前日期和时间。

使用方法

  1. 运行代码并打开应用程序窗口。
  2. 应用程序窗口中会显示当前时间和日期。
  3. 按钮"开启数显"用于切换是否显示日期和时间。
  4. 按钮"播放音乐"用于切换音乐的播放状态。

代码说明

以下是代码中一些重要部分的说明:

  1. get_time()函数:用于获取当前日期和时间,并计算时针、分针和秒针的角度。
  2. toggle_display_digit()函数:用于切换是否显示日期和时间。
  3. toggle_music_play()函数:用于切换音乐的播放状态。
  4. tick()函数:每0.1秒被系统调用一次,用于更新时间。
  5. draw()函数:用于绘制屏幕上的时钟和日期/时间。

示例运行结果

在这里插入图片描述

示例代码

import simpleguitk as gui
import math
from datetime import datetime

# 定义全局变量
interval = 100  # 时间事件处理器触发的周期,0.1秒
hour_radian = 0.0  # 时针角度
minute_radian = 0.0  # 分针角度
second_radian = 0.0  # 秒针角度
digit_date = ''  # 日期
play_music = False  # 是否播放音乐
success = False  # 是否整秒点击“关闭音乐”成功
frame_width = 600  # 窗口的宽度
frame_height = 600  # 窗口的高度

digit_time = ''  # 时间
display_digit = False  # 是否数显
tenth_second = 0  # 十分之秒

# 加载图像资源
clock_face = gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project3/ClockFace.jpg")
hour = gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project3//Hour.png")
minute = gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project3/Minute.png")
second = gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project3//Second.png")

# 加载并设置音乐资源
music_box = gui.load_sound("http://202.201.225.74/video/PythonResoure/ProjectResource/sounds/project3/music_box.ogg")
music_box.set_volume(0.5)


# 定义获取日期时间的辅助函数
def get_time():
    # 获取日期时间
    global hour_radian, minute_radian, second_radian, digit_date, digit_time, tenth_second
    dt = datetime.now()
    second_radian = 2.0 * math.pi * dt.second / 60.0
    minute_radian = 2.0 * math.pi * (dt.minute + dt.second / 60.0) / 60.0
    tenth_second = dt.microsecond // 100000
    if dt.hour <= 12:
        hour_radian = 2.0 * math.pi * (dt.hour + float(dt.minute) / 60.0) / 12.0

    else:
        hour_radian = 4.0 * math.pi * (dt.hour + float(dt.minute) / 60.0) / 24.0
    month = ''
    if dt.month < 10:
        month = '0' + str(dt.month)
    else:
        month = str(dt.month)
    day = ''
    if dt.day < 10:
        day = '0' + str(dt.day)
    else:
        day = str(dt.day)
    digit_date = str(dt.year) + '年' + month + '月' + day + '日'
    digit_time = str(dt.hour) + '时' + str(dt.minute) + '分' + str(dt.second) + '秒' + str(dt.microsecond // 100000)


# 定义按钮“开启数显”的事件处理函数
def toggle_display_digit():
    global display_digit
    if not display_digit:
        display_digit = True
        button1.set_text('关闭数显')

    else:
        button1.set_text('开启数显')
        display_digit = False


# 定义按钮“播放音乐”的事件处理函数
def toggle_music_play():
    # 切换音乐播放
    global play_music, success
    if not play_music:
        music_box.rewind()
        music_box.play()
        button2.set_text('停止播放音乐')
        play_music = True
    else:
        if tenth_second == 0:
            success = True
            play_music = False
            button2.set_text('播放音乐')
            music_box.pause()


# 定义时钟事件的处理函数(每0.1秒被系统调用1次)
def tick():
    get_time()


# 定义绘制屏幕的处理函数
def draw(canvas):
    global display_digit
    canvas.draw_image(clock_face, [300, 300], [600, 600], [300, 300], [600, 600])
    canvas.draw_image(hour, [8, 300], [16, 600], [300, 300], [18, 600], hour_radian)
    canvas.draw_image(minute, [6, 300], [12, 600], [300, 300], [12, 600], minute_radian)
    canvas.draw_image(second, [15, 300], [30, 600], [300, 300], [30, 600], second_radian)
    if display_digit:
        canvas.draw_text(digit_date, [155, 250], 36, "Black")
        canvas.draw_text(digit_time, [155, 410], 36, "Black")


# 创建窗口
frame = gui.create_frame("时钟", 600, 600)

button1 = frame.add_button("开启数显", toggle_display_digit, 50)
button2 = frame.add_button("播放音乐", toggle_music_play, 50)
frame.set_draw_handler(draw)
timer = gui.create_timer(interval, tick)

# 启动时钟
timer.start()

# 调用获取日期时间函数
get_time()

# 启动窗口
frame.start()

注意事项

请确保已经安装了所需的依赖库,并且保持网络连接,以便加载图像资源和音乐资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

力江

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值