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()
결과물

