Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membuat program jam penggera mudah menggunakan Python dan Tkinter?

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

WBOY
WBOYke hadapan
2023-04-21 11:28:081180semak imbas

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 *

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

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

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

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

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)

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)

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()

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam