소개
이 프로젝트에서는 Python 과 Tkinter 라이브러리를 사용하여 디지털 시계 애플리케이션을 만들 것입니다. 이 시계는 현재 시간과 날짜를 모두 표시하며, 사용자가 12 시간 형식과 24 시간 형식 사이를 전환할 수 있도록 합니다. 코드를 여러 단계로 나누어, 필요한 라이브러리 설치부터 프로젝트 실행까지 진행할 것입니다.
👀 미리보기

🎯 작업
이 프로젝트를 통해 다음을 배우게 됩니다:
- Python 으로 디지털 시계를 만들기 위해 필요한 라이브러리를 설치하는 방법.
- Python 스크립트를 생성하고 필요한 라이브러리를 가져와 프로젝트를 설정하는 방법.
- 현재 시간과 날짜를 업데이트하고 표시하는 함수를 정의하는 방법.
- 12 시간 형식과 24 시간 형식 사이를 전환하는 함수를 만드는 방법.
- 메인 애플리케이션 창을 만들고 GUI 스타일을 구성하는 방법.
- 메인 창에 GUI 구성 요소를 생성하고 배치하는 방법.
- 필요한 함수를 호출하고 메인 GUI 루프를 실행하여 시계를 시작하는 방법.
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- Python 패키지 관리자인 pip 를 사용하여 라이브러리를 설치합니다.
- Tkinter 라이브러리를 사용하여 Python 에서 그래픽 사용자 인터페이스 (GUI) 를 만듭니다.
- Python 에서 시간과 날짜를 형식화하고 표시합니다.
- 테마 스타일을 사용하여 GUI 구성 요소의 모양을 사용자 정의합니다.
- 서로 다른 텍스트와 기능을 가진 버튼을 만듭니다.
- Python 스크립트를 실행하고 메인 GUI 루프를 실행합니다.
필요한 라이브러리 설치
Python 으로 디지털 시계를 만들기 전에, 필요한 라이브러리가 설치되어 있는지 확인해야 합니다. 이 단계에서는 Python 패키지 관리자인 pip 를 사용하여 필요한 라이브러리를 설치합니다.
sudo apt update
sudo apt-get install python3-tk -y
pip install ttkthemes
이러한 라이브러리의 용도는 다음과 같습니다:
tkinter: 이 라이브러리는 Python 에서 그래픽 사용자 인터페이스 (GUI) 를 생성하는 데 필요한 도구와 구성 요소를 제공합니다. GUI 개발을 위한 표준 라이브러리입니다.ttkthemes: 이 라이브러리를 사용하면 테마 스타일을 사용하고 Tkinter 구성 요소의 모양을 사용자 정의하여 디지털 시계에 시각적으로 매력적인 디자인을 제공할 수 있습니다.
위의 명령을 터미널 또는 명령 프롬프트에서 사용하여 이러한 라이브러리를 설치할 수 있습니다. 설치가 완료되면 다음 단계에 설명된 대로 디지털 시계를 만들 준비가 된 것입니다.
이제 digital_clock.py라는 새 Python 파일을 만들고 선호하는 코드 편집기에서 엽니다.
cd ~/project
touch digital_clock.py
프로젝트 설정
먼저, 필요한 Python 스크립트를 생성하고 필요한 라이브러리를 가져와 프로젝트를 설정해 보겠습니다.
## Import necessary libraries
import tkinter as tk
from tkinter import ttk
from ttkthemes import ThemedStyle
from time import strftime
이 단계에서:
- 그래픽 사용자 인터페이스 (GUI) 를 만들기 위해
tkinter라이브러리를 가져옵니다. - 고급 스타일 지정을 위해
tkinter에서 특정 구성 요소 (ttk,ThemedStyle) 를 가져옵니다. - 시간을 형식화하고 표시하기 위해
time모듈에서strftime함수를 가져옵니다.
시간 표시 함수 정의
다음으로, 현재 시간과 날짜를 업데이트하고 표시하는 함수를 정의해 보겠습니다.
def time():
current_time_format = "%H:%M:%S" if is_24_hour_format else "%I:%M:%S %p"
current_time = strftime(current_time_format)
current_date = strftime("%A, %B %d, %Y")
label_time.config(text=current_time)
label_date.config(text=current_date)
label_time.after(1000, time)
이 단계에서:
- 시간 및 날짜 레이블을 업데이트하는
time()함수를 생성합니다. current_time_format변수는is_24_hour_format플래그를 기반으로 24 시간 또는 12 시간 시간 형식을 사용할지 여부를 결정합니다.strftime함수를 사용하여 원하는 형식으로 현재 시간과 날짜를 가져옵니다.- 레이블 (
label_time및label_date) 은 각각 현재 시간과 날짜로 업데이트됩니다. label_time.after(1000, time)줄은 시간을 지속적으로 업데이트하기 위해time함수가 1000 밀리초 (1 초) 마다 실행되도록 예약합니다.
시간 형식 전환
사용자가 12 시간 및 24 시간 시간 형식 간에 전환할 수 있는 함수를 만들어 보겠습니다.
def toggle_time_format():
global is_24_hour_format
is_24_hour_format = not is_24_hour_format
time_format_button.config(text="12 Hour" if is_24_hour_format else "24 Hour")
이 단계에서:
is_24_hour_format플래그를True와False사이에서 전환하는toggle_time_format()함수를 정의합니다.- 시간 형식 버튼 (
time_format_button) 의 레이블은 현재 형식에 따라 "12 Hour" 또는 "24 Hour"를 표시하도록 업데이트됩니다.
메인 애플리케이션 창 생성
이제 메인 애플리케이션 윈도우를 생성하고 제목과 치수를 설정해 보겠습니다.
root = tk.Tk()
root.title("Digital Clock")
root.geometry("400x250")
이 단계에서:
tk.Tk()를 사용하여 메인 애플리케이션 윈도우를 생성합니다.- 윈도우 제목을 "Digital Clock"으로 설정합니다.
- 윈도우의 치수는 400x250 픽셀로 설정됩니다.
GUI 스타일 설정
시계의 모양을 사용자 정의하기 위해 레이블, 버튼 및 프레임의 스타일을 구성합니다.
style = ThemedStyle(root)
style.set_theme("plastik")
style.configure(
"TLabel", foreground="#FF5733", background="#333333", font=("calibri", 48, "bold")
)
style.configure(
"TButton", foreground="#FF5733", background="#333333", font=("calibri", 10, "bold")
)
style.configure("TFrame", background="#333333")
이 단계에서:
- 일관된 모양과 느낌을 적용하기 위해 GUI 컴포넌트에 대한 테마 스타일을 생성합니다.
- 레이블 텍스트 색상, 배경 색상 및 글꼴을 사용자 정의합니다.
- 버튼 텍스트 색상, 배경 색상 및 글꼴을 사용자 정의합니다.
- 프레임 배경 색상을 사용자 정의합니다.
GUI 컴포넌트 생성 및 배치
이제 메인 윈도우에 GUI 컴포넌트를 생성하고 배치해 보겠습니다.
frame = ttk.Frame(root, style="TFrame", padding=20)
frame.place(relx=0.5, rely=0.5, anchor="center")
label_time = ttk.Label(frame, font=("calibri", 48, "bold"))
label_time.pack()
label_date = ttk.Label(frame, font=("calibri", 16))
label_date.pack()
is_24_hour_format = True
time_format_button = ttk.Button(
frame, text="12 Hour", command=toggle_time_format, style="TButton"
)
time_format_button.pack(pady=20)
이 단계에서:
- 지정된 스타일과 패딩을 사용하여 프레임 (
frame) 을 생성합니다. - 프레임은 메인 윈도우의 중앙에 배치됩니다.
- 시간과 날짜를 표시하기 위해 두 개의 레이블 (
label_time및label_date) 을 생성합니다. is_24_hour_format에 대한 초기 값으로True가 설정됩니다.- "12 Hour" 텍스트와
toggle_time_format함수를 명령으로 설정하여 버튼 (time_format_button) 을 생성합니다. - 모든 컴포넌트는 프레임에 패킹되고 배치됩니다.
시계 시작
마지막으로, time 함수를 호출하고 메인 GUI 루프를 실행하여 시계를 시작해 보겠습니다.
time()
root.mainloop()
이 단계에서:
- 시계를 시작하기 위해
time()함수를 호출합니다. root.mainloop()메서드는 메인 GUI 루프를 시작하여 애플리케이션이 실시간으로 실행되고 업데이트되도록 합니다.
이제 디지털 시계 애플리케이션을 실행해 보겠습니다.
cd ~/project
python digital_clock.py

요약
이 프로젝트에서는 Python 과 Tkinter 를 사용하여 디지털 시계 애플리케이션을 만들었습니다. 프로젝트 설정, 시간 표시 및 형식 전환을 위한 함수 정의, GUI 스타일 구성, GUI 컴포넌트 생성, 시계 애플리케이션 실행 등 여러 단계로 프로세스를 나누었습니다. 이 디지털 시계는 현재 시간과 날짜를 표시하며 사용자가 12 시간 및 24 시간 시간 형식 간에 전환할 수 있도록 합니다.



