Python でデジタル時計を作成

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_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 フラグを 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) を作成します。
  • フレームはメインウィンドウの中央に配置されます。
  • 時間と日付を表示するために、2 つのラベル (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

デジタル時計アプリケーションインターフェース

まとめ

このプロジェクトでは、Python と Tkinter を使用してデジタル時計アプリケーションを作成しました。プロセスをいくつかのステップに分割しました。これには、プロジェクトのセットアップ、時間表示とフォーマット切り替えのための関数の定義、GUI スタイルの設定、GUI コンポーネントの作成、および時計アプリケーションの実行が含まれます。このデジタル時計は、現在の時刻と日付を表示し、ユーザーが 12 時間形式と 24 時間形式を切り替えることができます。

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習