카테고리 없음

알람 시계 1

2024 자탐 2025. 5. 30. 19:28
import tkinter as tk
from tkinter import messagebox
class TimerApp:
    def __init__(self,w):
        self.w=w
        self.w.title('타이머')
        self.var=tk.StringVar()
        self.var.set('00:05:00')
        self.label=tk.Label(w,text='남은 시간',font=('',18))
        self.label.pack()
        self.display=tk.Label(w,textvariable=self.var,font=('',48))
        self.display.pack()
        self.time_label=tk.Label(w,text='타이머 시간 (HH:MM:SS):')
        self.time_label.pack()
        self.time_entry=tk.Entry(w)
        self.time_entry.pack()
        self.start_bt=tk.Button(w,text='시작',command=self.start)
        self.start_bt.pack(side=tk.LEFT,padx=10)
        self.stop_bt = tk.Button(w, text='정지',command=self.stop)
        self.stop_bt.pack(side=tk.LEFT, padx=10)
    def start(self):
        input=self.time_entry.get()#01:20:10
        if input:
            self.var.set(input)
            self.time_left=self.parse_time(input)#4810
        else:
            self.time_left = self.parse_time(self.var.get())  # 4810
        self.update()
    def stop(self):
        if hasattr(self,'timer'):
            self.w.after_cancel(self.timer)
            messagebox.showinfo('알람','타이머가 정지되었습니다.')

    def update(self):
        self.var.set(self.format_time(self.time_left))
        if self.time_left>0:
            self.time_left-=1
            self.timer=self.w.after(1000,self.update)
        else:
            messagebox.showinfo('알람','타이머가 종료되었습니다.')
    def parse_time(self,time_str):#시,분,초 ---> 초로 바꿈
        h,m,s=map(int,time_str.split(':'))
        return h*3600+m*60+s
    def format_time(self,seconds):#초  ---->시,분,초 바꿈
        h=seconds//3600
        m=(seconds%3600)//60
        s=seconds%60
        return f'{h:02d}:{m:02d}:{s:02d}'

if __name__=='__main__':
    w=tk.Tk()
    app1=TimerApp(w)
    w.mainloop()

결과물