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

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 루프를 실행합니다.

필요한 라이브러리 설치

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 시간 시간 형식 간에 전환할 수 있도록 합니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습