【Python】ストップウォッチのGUIアプリを作成する方法

この記事では、Pythonを使用してストップウォッチアプリを作成する方法を紹介します。

Tkinterというモジュールを使ってGUIウィンドウを作成し、開始・停止・リセットの機能を持つストップウォッチを実装します。

Python初心者の方でも分かりやすく、ステップバイステップで解説していきます。

目次から探す

ストップウォッチアプリの作成

必要なモジュールのインポート

Pythonでストップウォッチアプリを作成するためには、tkinterモジュールとtimeモジュールを使用する必要があります。

以下のサンプルコードを使って、これらのモジュールをインポートします。

import tkinter as tk
import time

GUIウィンドウの作成

まず、tkinterモジュールを使用してGUIウィンドウを作成します。

以下のサンプルコードを使って、ウィンドウを作成します。

root = tk.Tk()
root.title("ストップウォッチ")

ストップウォッチの表示

ストップウォッチの表示部分を作成します。

以下のサンプルコードを使って、ストップウォッチの表示部分を配置します。

time_var = tk.StringVar()
time_var.set("00:00:00")
time_label = tk.Label(root, textvariable=time_var, font=("Helvetica", 48))
time_label.pack()

ストップウォッチの操作ボタン

ストップウォッチの操作ボタン(開始、停止、リセット)を作成します。

以下のサンプルコードを使って、それぞれのボタンを配置します。

start_button = tk.Button(root, text="開始", command=start_timer)
start_button.pack()

stop_button = tk.Button(root, text="停止", command=stop_timer)
stop_button.pack()

reset_button = tk.Button(root, text="リセット", command=reset_timer)
reset_button.pack()

start_timerstop_timerreset_timerはこのあと実装する関数であるため、このまま実行するとエラーになります。

ストップウォッチの機能

ストップウォッチの機能を実装します。

以下のサンプルコードを使って、ストップウォッチの時間計測処理や各ボタンの機能を定義します。

is_running = False
start_time = None
elapsed_time = 0

def start_timer():
    global is_running, start_time
    if not is_running:
        is_running = True
        start_time = time.time()
        update_timer()

def stop_timer():
    global is_running, elapsed_time
    if is_running:
        is_running = False
        elapsed_time += time.time() - start_time

def reset_timer():
    global is_running, start_time, elapsed_time
    is_running = False
    start_time = None
    elapsed_time = 0
    time_var.set("00:00:00")

def update_timer():
    global is_running, start_time, elapsed_time
    if is_running:
        elapsed = int(time.time() - start_time + elapsed_time)
        hours = elapsed // 3600
        minutes = (elapsed % 3600) // 60
        seconds = elapsed % 60
        time_var.set(f"{hours:02d}:{minutes:02d}:{seconds:02d}")
        root.after(1000, update_timer)

root.mainloop()

このストップウォッチの処理は、操作ボタンを作成する処理より前に記述してください。

そうしないと、ボタン作成処理の引数のcommand=start_timerなどで、関数が存在しないエラーが発生します。

完成したストップウォッチアプリの動作確認

これでストップウォッチアプリの作成が完了しました。

実際に上記のコードを実行して、ストップウォッチアプリが正しく動作するか確認してみましょう。

完成したコード

上記の処理を一つにまとめたストップウォッチのコードがこちらです。

# 必要なライブラリをインポート
import tkinter as tk
import time

is_running = False # タイマーが動いているかどうか
start_time = None # タイマーを開始した時刻
elapsed_time = 0 # タイマーが動いていた時間

# タイマーを開始する
def start_timer():
    global is_running, start_time
    if not is_running:
        is_running = True
        start_time = time.time()
        update_timer() # タイマーの更新を開始する

# タイマーを停止する
def stop_timer():
    global is_running, elapsed_time
    if is_running: # タイマーが動いている場合のみ停止する
        is_running = False
        elapsed_time += time.time() - start_time

# タイマーをリセットする
def reset_timer():
    global is_running, start_time, elapsed_time
    is_running = False
    start_time = None
    elapsed_time = 0
    time_var.set("00:00:00")

# タイマーを更新する
def update_timer():
    global is_running, start_time, elapsed_time
    if is_running: # タイマーが動いている場合のみ更新する
        elapsed = int(time.time() - start_time + elapsed_time)
        hours = elapsed // 3600
        minutes = (elapsed % 3600) // 60
        seconds = elapsed % 60
        time_var.set(f"{hours:02d}:{minutes:02d}:{seconds:02d}")
        root.after(1000, update_timer) # 1秒後に再度update_timerを呼び出す

root = tk.Tk() # ウィンドウを作成する
root.title("ストップウォッチ") # ウィンドウのタイトルを設定する

time_var = tk.StringVar() # タイマーの表示を更新するための変数
time_var.set("00:00:00") # タイマーの初期値を設定する
time_label = tk.Label(root, textvariable=time_var, font=("Helvetica", 48)) # タイマーの表示を更新するためのラベル
time_label.pack() # ラベルをウィンドウに配置する

# スタート、ストップ、リセットボタンを作成する
start_button = tk.Button(root, text="開始", command=start_timer)
start_button.pack()

stop_button = tk.Button(root, text="停止", command=stop_timer)
stop_button.pack()

reset_button = tk.Button(root, text="リセット", command=reset_timer)
reset_button.pack()

# ウィンドウを表示する
root.mainloop()

このコードは、Tkinterを使用してストップウォッチのGUIアプリを作成するためのものです。

各ボタンの機能やタイマーの更新処理が適切に実装されています。

実行すると、ウィンドウが表示され、Startボタンを押すことでタイマーが開始されます。

Stopボタンを押すと一時停止し、Resetボタンを押すとリセットされます。

動作確認を行い、正しく動作することを確認してください。

目次から探す