Dieser Artikel verwendet hauptsächlich die Tkinter-Bibliothek von Python, um ein einfaches Weckerprogramm zu erstellen, das einen Ton abspielen kann, um Sie zur angegebenen Zeit daran zu erinnern. Die Benutzeroberfläche dieses Programms ist relativ einfach, mit nur einer Beschriftung, drei Optionsmenüs und einer Schaltfläche. Der Benutzer kann die Alarmzeit über das Optionsmenü einstellen und dann auf die Schaltfläche klicken, um die Zeitmessung zu starten Das Programm spielt einen Ton ab, um den Benutzer daran zu erinnern.
Lassen Sie uns nun die Rolle jedes Codeblocks einzeln erklären.
from tkinter import * import datetime import time import winsound from threading import *
Zuerst haben wir die Tkinter-Bibliothek, die Datetime-Bibliothek, die Time-Bibliothek, die Winsound-Bibliothek und die Threading-Bibliothek importiert.
root = Tk() root.geometry("400x200")
Erstellen Sie ein Fenster mit dem Namen root und stellen Sie die Fenstergröße auf 400 x 200 ein.
def Threading(): t1=Thread(target=alarm) t1.start()
Definieren Sie eine Funktion Threading(), die einen neuen Thread mit dem Namen t1 erstellt, dessen Ziel darin besteht, die Funktion alarm() auszuführen und den Thread zu starten.
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)
Diese Funktion alarm() wird in einem separaten Thread ausgeführt, der jede Sekunde prüft, ob die aktuelle Zeit mit der eingestellten Zeit übereinstimmt. Wenn die aktuelle Zeit und die eingestellte Zeit gleich sind, wird winsound.PlaySound() aufgerufen, um eine Musikdatei abzuspielen und anzuzeigen, dass die Zeit abgelaufen ist.
Zu Beginn der Funktion werden zunächst die vom Benutzer auf der Schnittstelle festgelegten Stunden, Minuten und Sekunden über Hour.get(), Minute.get() und Second.get() abgerufen und dann zu einer Zeichenfolge kombiniert set_alarm_time. Als nächstes verwenden Sie time.sleep(), um den Thread für eine Sekunde in den Ruhezustand zu versetzen, sodass er jede Sekunde prüft, ob die aktuelle Zeit mit der eingestellten Zeit übereinstimmt.
Dann holen Sie sich die aktuelle Uhrzeit über datetime.datetime.now().strftime("%H:%M:%S") und formatieren Sie sie in die Zeichenfolge current_time mit Stunden, Minuten und Sekunden. Wenn schließlich current_time gleich set_alarm_time ist, wird eine Meldung gedruckt und winsound.PlaySound() aufgerufen, um eine Musikdatei abzuspielen.
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)
Dieser Code wird zum Hinzufügen von Beschriftungen, Rahmen, Schaltflächen und Optionsmenüs verwendet. Zuerst wird ein Frame erstellt und dann werden drei StringVar-Variablen vom Typ Stunde, Minute und Sekunde erstellt, um die vom Benutzer ausgewählten Stunden, Minuten und Sekunden zu speichern. Dann werden drei Tupelstunden, Minuten und Sekunden definiert, um jeweils numerische Zeichenfolgen von 00 bis 60 zu speichern. Den Zahlen 0 bis 9 werden Nullen vorangestellt, um ein konsistentes Format sicherzustellen. Verwenden Sie dann OptionMenu, um drei Optionsmenüs zur Auswahl von Stunden, Minuten und Sekunden zu erstellen.
Zusammenfassend stellt dieser Artikel eine grundlegende Weckeranwendung bereit, die über die GUI-Schnittstelle eingerichtet und gestartet werden kann. Wenn die Alarmzeit erreicht ist, spielt die Anwendung einen Ton ab, um den Benutzer daran zu erinnern.
Anbei ist der vollständige Quellcode:
# 导入所需库 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()
Das obige ist der detaillierte Inhalt vonWie erstelle ich ein einfaches Weckerprogramm mit Python und Tkinter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!