本文主要是使用 Python 的 Tkinter 庫創建一個簡單的鬧鐘程序,它可以在指定的時間播放一個聲音來提醒你。這個程式介面比較簡單,只有一個標籤、三個選項選單和一個按鈕,使用者可以透過選項選單設定鬧鐘的時間,然後點擊按鈕開始計時,直到鬧鐘時間到達時,程式會播放一個聲音以提示使用者。
現在讓我們逐一解釋每個程式碼區塊的作用。
from tkinter import * import datetime import time import winsound from threading import *
首先,我們匯入了 tkinter 函式庫、datetime、time 函式庫、winsound 函式庫以及 threading 函式庫。
root = Tk() root.geometry("400x200")
建立一個名為 root 的窗口,並設定窗口大小為 400x200。
def Threading(): t1=Thread(target=alarm) t1.start()
定義一個函數 Threading(),它將建立一個名為 t1 的新線程,該執行緒的目標是執行 alarm() 函數,並啟動該執行緒。
def alarm(): while True: set_alarm_time = f"{hour.get()}:{minute.get()}:{second.get()}" time.sleep(1) current_time = datetime.datetime.now().strftime("%H:%M:%S") print(current_time,set_alarm_time) if current_time == set_alarm_time: print("Time to Wake up") winsound.PlaySound("sound.wav",winsound.SND_ASYNC)
這個函數 alarm() 是在一個單獨的執行緒中執行的,該執行緒每隔一秒鐘檢查一次當前時間是否等於設定的時間。如果目前時間和設定時間相等,就會呼叫 winsound.PlaySound() 來播放一個音樂文件,表示時間到了。
在函數開頭,先透過hour.get()、minute.get() 和second.get() 取得使用者在介面上設定的小時、分鐘和秒數,然後將它們組合成一個字符串set_alarm_time。接下來,使用 time.sleep() 讓執行緒休眠 1 秒鐘,這樣每隔 1 秒鐘就會檢查一次當前時間是否等於設定時間。
然後,透過datetime.datetime.now().strftime("%H:%M:%S") 取得當前時間,並將其格式化為小時、分鐘和秒數的字串current_time 。最後,如果 current_time 等於 set_alarm_time,就會列印一則訊息並呼叫 winsound.PlaySound() 播放一個音樂檔案。
Label(root,text="Alarm Clock",font=("Helvetica 20 bold"),fg="red").pack(pady=10) Label(root,text="Set Time",font=("Helvetica 15 bold")).pack() frame = Frame(root) frame.pack() hour = StringVar(root) hours = ('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24' ) hour.set(hours[0]) hrs = OptionMenu(frame, hour, *hours) hrs.pack(side=LEFT) minute = StringVar(root) minutes = ('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60') minute.set(minutes[0]) mins = OptionMenu(frame, minute, *minutes) mins.pack(side=LEFT) second = StringVar(root) seconds = ('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60') second.set(seconds[0]) secs = OptionMenu(frame, second, *seconds) secs.pack(side=LEFT) Button(root,text="Set Alarm",font=("Helvetica 15"),command=Threading).pack(pady=20)
這段程式碼用於新增標籤、框架、按鈕和選項選單。先建立了一個框架 frame,然後建立了三個 StringVar 類型的變數 hour,minute,second 來儲存使用者選擇的小時、分鐘和秒數。然後定義了三個元組 hours,minutes,seconds 分別儲存 00 到 60 的數字字串,其中的 0~9 數字前面補零,保證格式一致。接著用 OptionMenu 創建了三個選項選單,分別用來選擇小時、分鐘和秒數。
綜上所述,本文提供了一個基本的鬧鐘應用程序,可以透過GUI介面設定和啟動。當鬧鐘時間到達時,應用程式將播放聲音,以提醒用戶。
附完整原始碼:
# 导入所需库 from tkinter import * import datetime import time import winsound from threading import * # 创建对象 root = Tk() # 设置几何体 root.geometry("400x200") # 使用线程 def Threading(): t1=Thread(target=alarm) t1.start() def alarm(): # 无限循环 while True: # 设置警报 set_alarm_time = f"{hour.get()}:{minute.get()}:{second.get()}" # 等待一秒钟 time.sleep(1) # 获取当前时间 current_time = datetime.datetime.now().strftime("%H:%M:%S") print(current_time,set_alarm_time) # 检查设置的报警是否等于当前时间 if current_time == set_alarm_time: print("Time to Wake up") # 播放声音 winsound.PlaySound("sound.wav",winsound.SND_ASYNC) # 添加标签、框架、按钮、选项菜单 Label(root,text="Alarm Clock",font=("Helvetica 20 bold"),fg="red").pack(pady=10) Label(root,text="Set Time",font=("Helvetica 15 bold")).pack() frame = Frame(root) frame.pack() hour = StringVar(root) hours = ('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24' ) hour.set(hours[0]) hrs = OptionMenu(frame, hour, *hours) hrs.pack(side=LEFT) minute = StringVar(root) minutes = ('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60') minute.set(minutes[0]) mins = OptionMenu(frame, minute, *minutes) mins.pack(side=LEFT) second = StringVar(root) seconds = ('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60') second.set(seconds[0]) secs = OptionMenu(frame, second, *seconds) secs.pack(side=LEFT) Button(root,text="Set Alarm",font=("Helvetica 15"),command=Threading).pack(pady=20) # 执行Tkinter root.mainloop()#
以上是如何用Python和Tkinter製作一個簡單的鬧鐘程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!