最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+Tkinter創(chuàng)建一個(gè)簡(jiǎn)單的鬧鐘程序

 更新時(shí)間:2023年04月07日 09:30:22   作者:海擁  
這篇文章主要為大家詳細(xì)介紹了如何使用 Python 的 Tkinter 庫創(chuàng)建一個(gè)簡(jiǎn)單的鬧鐘程序,它可以在指定的時(shí)間播放一個(gè)聲音來提醒你,感興趣的可以學(xué)習(xí)一下

本文主要是使用 Python 的 Tkinter 庫創(chuàng)建一個(gè)簡(jiǎn)單的鬧鐘程序,它可以在指定的時(shí)間播放一個(gè)聲音來提醒你。這個(gè)程序界面比較簡(jiǎn)單,只有一個(gè)標(biāo)簽、三個(gè)選項(xiàng)菜單和一個(gè)按鈕,用戶可以通過選項(xiàng)菜單設(shè)置鬧鐘的時(shí)間,然后點(diǎn)擊按鈕開始計(jì)時(shí),直到鬧鐘時(shí)間到達(dá)時(shí),程序會(huì)播放一個(gè)聲音以提示用戶。

現(xiàn)在讓我們逐個(gè)解釋每個(gè)代碼塊的作用。

from tkinter import *
import datetime
import time
import winsound
from threading import *

首先,我們導(dǎo)入了 tkinter 庫、datetime、time 庫、winsound 庫以及 threading 庫。

root = Tk()
root.geometry("400x200")

創(chuàng)建一個(gè)名為 root 的窗口,并設(shè)置窗口大小為 400x200。

def Threading():
    t1=Thread(target=alarm)
    t1.start()

定義一個(gè)函數(shù) Threading(),它將創(chuàng)建一個(gè)名為 t1 的新線程,該線程的目標(biāo)是運(yùn)行 alarm() 函數(shù),并啟動(dòng)該線程。

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)

這個(gè)函數(shù) alarm() 是在一個(gè)單獨(dú)的線程中運(yùn)行的,該線程每隔一秒鐘檢查一次當(dāng)前時(shí)間是否等于設(shè)置的時(shí)間。如果當(dāng)前時(shí)間和設(shè)置時(shí)間相等,就會(huì)調(diào)用 winsound.PlaySound() 播放一個(gè)音樂文件,表示時(shí)間到了。

在函數(shù)開頭,首先通過 hour.get()、minute.get() 和 second.get() 獲取用戶在界面上設(shè)置的小時(shí)、分鐘和秒數(shù),然后將它們組合成一個(gè)字符串 set_alarm_time。接下來,使用 time.sleep() 讓線程休眠 1 秒鐘,這樣每隔 1 秒鐘就會(huì)檢查一次當(dāng)前時(shí)間是否等于設(shè)置時(shí)間。

然后,通過 datetime.datetime.now().strftime("%H:%M:%S") 獲取當(dāng)前時(shí)間,并將其格式化為小時(shí)、分鐘和秒數(shù)的字符串 current_time。最后,如果 current_time 等于 set_alarm_time,就會(huì)打印一條消息并調(diào)用 winsound.PlaySound() 播放一個(gè)音樂文件。

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)

這段代碼用于添加標(biāo)簽、框架、按鈕和選項(xiàng)菜單。先創(chuàng)建了一個(gè)框架 frame,然后創(chuàng)建了三個(gè) StringVar 類型的變量 hour,minute,second 來存儲(chǔ)用戶選擇的小時(shí)、分鐘和秒數(shù)。然后定義了三個(gè)元組 hours,minutes,seconds 分別存儲(chǔ) 00 到 60 的數(shù)字字符串,其中的 0~9 數(shù)字前面補(bǔ)零,保證格式一致。接著用 OptionMenu 創(chuàng)建了三個(gè)選項(xiàng)菜單,分別用來選擇小時(shí)、分鐘和秒數(shù)。

綜上所述,本文提供了一個(gè)基本的鬧鐘應(yīng)用程序,可以通過GUI界面設(shè)置和啟動(dòng)。當(dāng)鬧鐘時(shí)間到達(dá)時(shí),應(yīng)用程序?qū)⒉シ怕曇?,以提醒用戶?/p>

附完整源碼:

# 導(dǎo)入所需庫
from tkinter import *
import datetime
import time
import winsound
from threading import *

# 創(chuàng)建對(duì)象
root = Tk()

# 設(shè)置幾何體
root.geometry("400x200")

# 使用線程
def Threading():
	t1=Thread(target=alarm)
	t1.start()

def alarm():
	# 無限循環(huán)
	while True:
		# 設(shè)置警報(bào)
		set_alarm_time = f"{hour.get()}:{minute.get()}:{second.get()}"

		# 等待一秒鐘
		time.sleep(1)

		# 獲取當(dāng)前時(shí)間
		current_time = datetime.datetime.now().strftime("%H:%M:%S")
		print(current_time,set_alarm_time)

		# 檢查設(shè)置的報(bào)警是否等于當(dāng)前時(shí)間
		if current_time == set_alarm_time:
			print("Time to Wake up")
			# 播放聲音
			winsound.PlaySound("sound.wav",winsound.SND_ASYNC)

# 添加標(biāo)簽、框架、按鈕、選項(xiàng)菜單
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)

# 執(zhí)行Tkinter	
root.mainloop()

到此這篇關(guān)于Python+Tkinter創(chuàng)建一個(gè)簡(jiǎn)單的鬧鐘程序的文章就介紹到這了,更多相關(guān)Python Tkinter鬧鐘內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python添加命令行參數(shù)的詳細(xì)過程

    python添加命令行參數(shù)的詳細(xì)過程

    Click 是 Flask 的開發(fā)團(tuán)隊(duì) Pallets 的另一款開源項(xiàng)目,它是用于快速創(chuàng)建命令行的第三方模塊,這篇文章主要介紹了python怎么添加命令行參數(shù),需要的朋友可以參考下
    2023-06-06
  • Python自動(dòng)化測(cè)試pytest中fixtureAPI簡(jiǎn)單說明

    Python自動(dòng)化測(cè)試pytest中fixtureAPI簡(jiǎn)單說明

    這篇文章主要為大家介紹了Python自動(dòng)化測(cè)試pytest中fixtureAPI的簡(jiǎn)單說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • 關(guān)于tf.nn.dynamic_rnn返回值詳解

    關(guān)于tf.nn.dynamic_rnn返回值詳解

    今天小編就為大家分享一篇關(guān)于tf.nn.dynamic_rnn返回值詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Pandas:DataFrame對(duì)象的基礎(chǔ)操作方法

    Pandas:DataFrame對(duì)象的基礎(chǔ)操作方法

    今天小編就為大家分享一篇Pandas:DataFrame對(duì)象的基礎(chǔ)操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python 反轉(zhuǎn)輸出正整數(shù)的操作

    Python 反轉(zhuǎn)輸出正整數(shù)的操作

    這篇文章主要介紹了Python 反轉(zhuǎn)輸出正整數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 如何計(jì)算 tensorflow 和 pytorch 模型的浮點(diǎn)運(yùn)算數(shù)

    如何計(jì)算 tensorflow 和 pytorch 模型的浮點(diǎn)運(yùn)算數(shù)

    FLOPs 是 floating point operations 的縮寫,指浮點(diǎn)運(yùn)算數(shù),可以用來衡量模型/算法的計(jì)算復(fù)雜度。本文主要討論如何在 tensorflow 1.x, tensorflow 2.x 以及 pytorch 中利用相關(guān)工具計(jì)算對(duì)應(yīng)模型的 FLOPs,需要的朋友可以參考下
    2022-11-11
  • Django通過dwebsocket實(shí)現(xiàn)websocket的例子

    Django通過dwebsocket實(shí)現(xiàn)websocket的例子

    今天小編就為大家分享一篇Django通過dwebsocket實(shí)現(xiàn)websocket的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python程序封裝為win32服務(wù)的方法

    python程序封裝為win32服務(wù)的方法

    這篇文章主要為大家詳細(xì)介紹了python程序封裝為win32服務(wù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python爬蟲爬取Bilibili彈幕過程解析

    Python爬蟲爬取Bilibili彈幕過程解析

    這篇文章主要介紹了Python爬蟲爬取Bilibili彈幕過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python實(shí)例練習(xí)逆序輸出字符串講解

    Python實(shí)例練習(xí)逆序輸出字符串講解

    今天小編就為大家分享一篇關(guān)于Python字符串逆序輸出的實(shí)例講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2022-05-05

最新評(píng)論

清涧县| 南宁市| 天水市| 綦江县| 陵川县| 枣强县| 南岸区| 油尖旺区| 上犹县| 上犹县| 襄垣县| 樟树市| 巫山县| 五寨县| 富锦市| 乌鲁木齐市| 延津县| 右玉县| 昌江| 越西县| 长垣县| 长垣县| 虹口区| 新乡县| 象州县| 碌曲县| 专栏| 二连浩特市| 海城市| 万荣县| 平遥县| 兰坪| 山东| 无极县| 开阳县| 兰西县| 东丰县| 洞头县| 昭通市| 抚远县| 汕头市|