Tkinter를 사용하면 시간 변화에 따라 스스로 갱신되는 GUI를 손쉽게 만들 수 있습니다. 이 글에서는 현재 시간이 바뀔 때마다 자동으로 새로 고침되는 GUI 기반 시계 애플리케이션을 만들어 보겠습니다. 화면에는 시계와 함께 요일 및 시간대(TimeZone) 정보도 함께 표시됩니다.
구현 순서는 다음과 같습니다. 먼저 tkinter 라이브러리를 임포트한 뒤, strftime 함수를 이용해 현재 시간과 요일 값을 가져오는 함수를 작성합니다. 그리고 Tkinter의 after() 메서드를 활용해 이 함수를 1초마다 반복 호출함으로써 자동 업데이트 효과를 만듭니다.
전체 예제 코드
# tkinter 라이브러리 임포트
from tkinter import *
import time
# 윈도우(캔버스) 인스턴스 생성
win = Tk()
# 윈도우 제목 설정
win.title("tutorialspoint.com")
# 윈도우 크기 지정
win.geometry("600x400")
# 시계를 표시하는 함수 정의
def clock():
hh = time.strftime("%I") # 시 (12시간 형식)
mm = time.strftime("%M") # 분
ss = time.strftime("%S") # 초
day = time.strftime("%A") # 요일
ap = time.strftime("%p") # 오전/오후
time_zone = time.strftime("%Z") # 시간대
my_lab.config(text=hh + ":" + mm + ":" + ss)
my_lab.after(1000, clock) # 1초 후 자신을 다시 호출
my_lab1.config(text=time_zone + " " + day)
# 시간 업데이트용 함수
def updateTime():
my_lab.config(text="New Text")
# 시계 텍스트를 표시할 레이블 생성
my_lab = Label(win, text="", font=("sans-serif", 56), fg="red")
my_lab.pack(pady=20)
my_lab1 = Label(win, text="", font=("Helvetica", 20), fg="blue")
my_lab1.pack(pady=10)
# clock 함수 호출로 시계 시작
clock()
# 윈도우 실행 유지
win.mainloop()핵심 포인트 정리
- time.strftime(): 현재 시간, 분, 초, 요일, 오전/오후, 시간대 등을 원하는 형식의 문자열로 반환합니다.
- Label.config(): 이미 생성된 위젯의 텍스트 속성을 동적으로 변경합니다. 별도의 위젯 재생성 없이 화면 내용만 갱신할 수 있습니다.
- after(1000, clock): 자동 업데이트의 핵심입니다. 1000밀리초(1초) 후에 clock 함수를 다시 호출하도록 예약하여, 시계가 매초 스스로 갱신되도록 만듭니다.
- mainloop(): 이벤트 루프를 실행해 윈도우가 종료될 때까지 프로그램이 계속 동작하도록 유지합니다.
실행 결과
위 코드를 실행하면 빨간색 큰 글씨로 현재 시각이 표시되고, 그 아래 파란색 글씨로 시간대와 요일이 함께 나타나는 자동 업데이트 GUI 애플리케이션이 생성됩니다. 매초 초 단위 숫자가 저절로 바뀌는 것을 확인할 수 있습니다.
