ホームページ  >  記事  >  バックエンド開発  >  Python と Tkinter を使用して簡単な目覚まし時計プログラムを作成するにはどうすればよいですか?

Python と Tkinter を使用して簡単な目覚まし時計プログラムを作成するにはどうすればよいですか?

WBOY
WBOY転載
2023-04-21 11:28:081144ブラウズ

この記事では主に Python の Tkinter ライブラリを使用して、指定した時間に音を鳴らして通知できる簡単な目覚まし時計プログラムを作成します。このプログラムのインターフェイスは比較的シンプルで、ラベルが 1 つ、オプション メニューが 3 つ、ボタンが 1 つだけあり、ユーザーはオプション メニューからアラーム時刻を設定し、ボタンをクリックして計時を開始できます。アラーム時刻に達すると、プログラムはユーザーに注意を促す音を鳴らします。

それでは、各コードブロックの役割を一つずつ説明していきます。

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

まず、tkinter ライブラリ、datetime、time ライブラリ、winsound ライブラリ、およびスレッド ライブラリをインポートしました。

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()、minut.get()、および Second.get() を通じて取得し、次に結合します。それらを 1 つの文字列 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)

このコードは、ラベル、フレーム、ボタン、オプション メニューを追加するために使用されます。まずフレームが作成され、次に 3 つの StringVar 型変数、時、分、秒が作成され、ユーザーが選択した時、分、秒が格納されます。次に、時、分、秒の 3 つのタプルがそれぞれ 00 ~ 60 の数値文字列を格納するように定義され、一貫した形式を保証するために、0 ~ 9 の数値の前にゼロが付けられます。次に、OptionMenu を使用して、時、分、秒を選択するための 3 つのオプション メニューを作成します。

要約すると、この記事では、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。