[python] Tkinter 타이머 사용

Tkinter는 Python에서 GUI 프로그래밍을 위한 표준 라이브러리입니다. Tkinter를 사용하면 사용자 인터페이스를 만들고 이벤트를 처리할 수 있습니다. 이번 블로그 포스트에서는 Tkinter를 사용하여 간단한 타이머를 만들어 보겠습니다.

필요한 모듈 가져오기

Tkinter를 사용하기 위해서는 먼저 tkinter 모듈을 import 해야 합니다. 다음과 같이 코드를 작성해 모듈을 가져옵니다.

import tkinter as tk

타이머 설정

타이머를 만들기 위해 Label 위젯을 사용할 것입니다. Label 위젯은 텍스트를 표시하는 데 사용되며, 일정한 시간 간격으로 텍스트를 업데이트할 것입니다.

먼저, Label 위젯을 생성합니다.

timer_label = tk.Label(root, text='00:00:00', font=('Arial', 24))
timer_label.pack()

위 코드에서 root는 Tkinter 애플리케이션의 루트 윈도우입니다. text 인자는 초기 텍스트로 ‘00:00:00’을 설정하고, font 인자는 폰트 스타일과 크기를 지정합니다.

타이머 로직 작성

타이머를 만들기 위해 start_timer() 함수와 stop_timer() 함수를 작성합니다. start_timer() 함수에서는 1초마다 update_time() 함수를 호출하여 시간을 업데이트하고, stop_timer() 함수에서는 타이머를 멈추게 합니다.

def start_timer():
    timer_label.after(1000, update_time)

def stop_timer():
    timer_label.after_cancel(update_time)

def update_time():
    # 시간을 업데이트하는 로직 작성
    # timer_label의 text를 변경하여 시간을 표시
    timer_label.after(1000, update_time)

애플리케이션 실행

마지막으로, 타이머를 실행하고 멈출 수 있는 버튼을 추가한 뒤, Tkinter 애플리케이션을 실행합니다.

start_button = tk.Button(root, text='Start', command=start_timer)
start_button.pack()

stop_button = tk.Button(root, text='Stop', command=stop_timer)
stop_button.pack()

root.mainloop()

위 코드에서 Button 위젯은 텍스트와 동작을 가지고 있습니다. command 인자에는 클릭 시 호출될 함수를 지정합니다.

전체 코드

import tkinter as tk

def start_timer():
    timer_label.after(1000, update_time)

def stop_timer():
    timer_label.after_cancel(update_time)

def update_time():
    # 시간을 업데이트하는 로직 작성
    # timer_label의 text를 변경하여 시간을 표시
    timer_label.after(1000, update_time)

root = tk.Tk()

timer_label = tk.Label(root, text='00:00:00', font=('Arial', 24))
timer_label.pack()

start_button = tk.Button(root, text='Start', command=start_timer)
start_button.pack()

stop_button = tk.Button(root, text='Stop', command=stop_timer)
stop_button.pack()

root.mainloop()

이제 위 코드를 실행하면 타이머가 작동하는 Tkinter 애플리케이션이 실행됩니다. Start 버튼을 클릭하면 타이머가 시작되고, Stop 버튼을 클릭하면 타이머가 멈춥니다.

이처럼 Tkinter를 사용하여 타이머를 만들 수 있습니다. Tkinter에는 다양한 위젯과 기능이 있으므로 다른 프로젝트에서도 유용하게 활용할 수 있습니다.

참고 자료