首頁  >  文章  >  後端開發  >  如何用Python和Tkinter製作一個簡單的鬧鐘程式?

如何用Python和Tkinter製作一個簡單的鬧鐘程式?

WBOY
WBOY轉載
2023-04-21 11:28:081150瀏覽

本文主要是使用 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中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除