Bagaimana untuk membuat program jam penggera mudah menggunakan Python dan Tkinter?

WBOY
Lepaskan: 2023-04-21 11:53:49
ke hadapan
1155 orang telah melayarinya

Artikel ini terutamanya menggunakan perpustakaan Tkinter Python untuk mencipta program jam penggera yang ringkas, yang boleh memainkan bunyi untuk mengingatkan anda pada masa yang ditetapkan. Antara muka program ini adalah agak mudah, dengan hanya satu label, tiga menu pilihan dan satu butang Pengguna boleh menetapkan masa penggera melalui menu pilihan, dan kemudian klik butang untuk memulakan masa apabila masa penggera dicapai program akan memainkan bunyi untuk mengingatkan pengguna.

Sekarang mari kita terangkan perkara yang dilakukan oleh setiap blok kod satu demi satu.

from tkinter import *
import datetime
import time
import winsound
from threading import *
Salin selepas log masuk

Mula-mula, kami mengimport perpustakaan tkinter, tarikh masa, perpustakaan masa, perpustakaan winsound dan perpustakaan threading.

root = Tk()
root.geometry("400x200")
Salin selepas log masuk

Buat tetingkap bernama root dan tetapkan saiz tetingkap kepada 400x200.

def Threading():
    t1=Thread(target=alarm)
    t1.start()
Salin selepas log masuk

Tentukan fungsi Threading(), yang akan mencipta thread baharu bernama t1 yang matlamatnya adalah untuk menjalankan fungsi alarm() dan memulakan thread.

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)
Salin selepas log masuk

Penggera fungsi ini() dijalankan dalam urutan berasingan, yang menyemak setiap saat sama ada masa semasa bersamaan dengan masa yang ditetapkan. Jika masa semasa adalah sama dengan masa yang ditetapkan, winsound.PlaySound() akan dipanggil untuk memainkan fail muzik untuk menunjukkan bahawa masa telah tamat.

Pada permulaan fungsi, mula-mula dapatkan jam, minit dan saat yang ditetapkan oleh pengguna pada antara muka melalui hour.get(), minute.get() dan second.get(), dan kemudian gabungkan mereka ke dalam satu aksara String set_alarm_time. Seterusnya, gunakan time.sleep() untuk membuat benang tidur selama 1 saat, supaya setiap 1 saat ia menyemak sama ada masa semasa adalah sama dengan masa yang ditetapkan.

Kemudian, dapatkan masa semasa melalui datetime.datetime.now().strftime("%H:%M:%S") dan formatkannya menjadi rentetan jam, minit dan saat semasa_masa . Akhir sekali, jika current_time adalah sama dengan set_alarm_time, mesej dicetak dan winsound.PlaySound() dipanggil untuk memainkan fail muzik.

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)
Salin selepas log masuk

Kod ini digunakan untuk menambah label, bingkai, butang dan menu pilihan. Pertama, bingkai dibuat, dan kemudian tiga pembolehubah jenis StringVar jam, minit dan saat dicipta untuk menyimpan jam, minit dan saat yang dipilih oleh pengguna. Kemudian tiga tuple jam, minit dan saat ditakrifkan untuk menyimpan rentetan angka dari 00 hingga 60 masing-masing Nombor 0~9 didahului oleh sifar untuk memastikan format yang konsisten. Kemudian gunakan OptionMenu untuk mencipta tiga menu pilihan untuk memilih jam, minit dan saat.

Ringkasnya, artikel ini menyediakan aplikasi jam penggera asas yang boleh disediakan dan dilancarkan melalui antara muka GUI. Apabila masa penggera tiba, aplikasi akan memainkan bunyi untuk mengingatkan pengguna.

Dilampirkan kod sumber lengkap:

# 导入所需库
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()
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk membuat program jam penggera mudah menggunakan Python dan Tkinter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan