Python写的一个闹钟程序

2025-03-07 36 0

闲来无事,用AI让它加工处理做了一个带界面UI的闹钟程序,但是这个我没有添加铃声,我的库安装不上,然后大家拿到源码可以自己去添加个音频。等时间到了就播放音频!成品在文章底部下方有下载链接(要关闭杀毒软件,不然会误报!

软件演示:

源码展示:

import tkinter as tk
from tkinter import messagebox
import time
import threading


class AlarmClock:
    def __init__(self, root):
        self.root = root
        self.root.title("闹钟")

        # 设置时间标签和输入框
        self.label_year = tk.Label(root, text="年:")
        self.label_year.grid(row=0, column=0, padx=5, pady=5, sticky=tk.E)
        self.year_entry = tk.Entry(root, width=5)
        self.year_entry.grid(row=0, column=1, padx=5, pady=5, sticky=tk.W)

        self.label_month = tk.Label(root, text="月:")
        self.label_month.grid(row=0, column=2, padx=5, pady=5, sticky=tk.E)
        self.month_entry = tk.Entry(root, width=5)
        self.month_entry.grid(row=0, column=3, padx=5, pady=5, sticky=tk.W)

        self.label_day = tk.Label(root, text="日:")
        self.label_day.grid(row=0, column=4, padx=5, pady=5, sticky=tk.E)
        self.day_entry = tk.Entry(root, width=5)
        self.day_entry.grid(row=0, column=5, padx=5, pady=5, sticky=tk.W)

        self.label_hour = tk.Label(root, text="时:")
        self.label_hour.grid(row=1, column=0, padx=5, pady=5, sticky=tk.E)
        self.hour_entry = tk.Entry(root, width=5)
        self.hour_entry.grid(row=1, column=1, padx=5, pady=5, sticky=tk.W)

        self.label_minute = tk.Label(root, text="分:")
        self.label_minute.grid(row=1, column=2, padx=5, pady=5, sticky=tk.E)
        self.minute_entry = tk.Entry(root, width=5)
        self.minute_entry.grid(row=1, column=3, padx=5, pady=5, sticky=tk.W)

        self.label_second = tk.Label(root, text="秒:")
        self.label_second.grid(row=1, column=4, padx=5, pady=5, sticky=tk.E)
        self.second_entry = tk.Entry(root, width=5)
        self.second_entry.grid(row=1, column=5, padx=5, pady=5, sticky=tk.W)

        # 设置和取消按钮
        self.set_button = tk.Button(root, text="设置闹钟", command=self.set_alarm)
        self.set_button.grid(row=2, column=2, padx=5, pady=5)

        self.cancel_button = tk.Button(root, text="取消闹钟", command=self.cancel_alarm)
        self.cancel_button.grid(row=2, column=4, padx=5, pady=5)

        # 显示消息的标签
        self.message_label = tk.Label(root, text="")
        self.message_label.grid(row=3, columnspan=6, padx=5, pady=5)

        # 设置列和行的权重以使界面自适应
        for i in range(6):
            root.grid_columnconfigure(i, weight=1)
        for i in range(4):
            root.grid_rowconfigure(i, weight=1)

        self.alarm_time = None
        self.alarm_active = False

    def set_alarm(self):
        year = self.year_entry.get()
        month = self.month_entry.get()
        day = self.day_entry.get()
        hour = self.hour_entry.get()
        minute = self.minute_entry.get()
        second = self.second_entry.get()

        try:
            # 格式化输入的时间
            self.alarm_time = f"{int(year)}-{int(month):02}-{int(day):02} {int(hour):02}:{int(minute):02}:{int(second):02}"
            self.alarm_active = True
            self.message_label.config(text=f"闹钟设置为: {self.alarm_time}")
        except ValueError:
            messagebox.showerror("错误", "请输入有效的日期和时间。")
            self.clear_entries()
            return

        threading.Thread(target=self.check_alarm, daemon=True).start()

    def check_alarm(self):
        while self.alarm_active:
            current_time = time.strftime("%Y-%m-%d %H:%M:%S")
            if current_time == self.alarm_time:
                messagebox.showinfo("闹钟", "时间到!")
                self.alarm_active = False
            time.sleep(1)

    def cancel_alarm(self):
        if self.alarm_active:
            self.alarm_active = False
            self.message_label.config(text="闹钟已取消。")
        else:
            self.message_label.config(text="没有设置闹钟。")

    def clear_entries(self):
        self.year_entry.delete(0, tk.END)
        self.month_entry.delete(0, tk.END)
        self.day_entry.delete(0, tk.END)
        self.hour_entry.delete(0, tk.END)
        self.minute_entry.delete(0, tk.END)
        self.second_entry.delete(0, tk.END)


if __name__ == "__main__":
    root = tk.Tk()
    alarm_clock = AlarmClock(root)
    root.mainloop()

 


相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

相关文章

微信小程序快乐会领6大瓶可乐福利
用Python加ai写了一个本地音乐播放器
很优秀的孩子,情商智商都高!
用Python加ai调教写了一个经典贪吃蛇游戏
用Python加ai写了一个定时关机小工具
摸鱼的时候用Python加ai写了一个带UI界面的猜数字游戏

发布评论

Python写的一个闹钟程序