파이썬으로 디지털 시계 만들기

PythonBeginner
지금 연습하기

소개

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

👀 미리보기

Digital clock application preview

🎯 작업

이 프로젝트를 통해 다음을 배우게 됩니다:

  • Python 으로 디지털 시계를 만들기 위해 필요한 라이브러리를 설치하는 방법.
  • Python 스크립트를 생성하고 필요한 라이브러리를 가져와 프로젝트를 설정하는 방법.
  • 현재 시간과 날짜를 업데이트하고 표시하는 함수를 정의하는 방법.
  • 12 시간 형식과 24 시간 형식 사이를 전환하는 함수를 만드는 방법.
  • 메인 애플리케이션 창을 만들고 GUI 스타일을 구성하는 방법.
  • 메인 창에 GUI 구성 요소를 생성하고 배치하는 방법.
  • 필요한 함수를 호출하고 메인 GUI 루프를 실행하여 시계를 시작하는 방법.

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • Python 패키지 관리자인 pip 를 사용하여 라이브러리를 설치합니다.
  • Tkinter 라이브러리를 사용하여 Python 에서 그래픽 사용자 인터페이스 (GUI) 를 만듭니다.
  • Python 에서 시간과 날짜를 형식화하고 표시합니다.
  • 테마 스타일을 사용하여 GUI 구성 요소의 모양을 사용자 정의합니다.
  • 서로 다른 텍스트와 기능을 가진 버튼을 만듭니다.
  • Python 스크립트를 실행하고 메인 GUI 루프를 실행합니다.
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 75%입니다.학습자들로부터 60%의 긍정적인 리뷰율을 받았습니다.

필요한 라이브러리 설치

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_timelabel_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 플래그를 TrueFalse 사이에서 전환하는 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_timelabel_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
Digital clock application interface
✨ 솔루션 확인 및 연습

요약

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