Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonとTkinterを使ったカウントダウンタイマーの作成方法

Tkinterは、GUIベースのデスクトップアプリケーションを作成するためのPython標準ライブラリです。豊富な関数、モジュール、メソッドが用意されており、これらを組み合わせることでアプリケーションのさまざまな機能を実装できます。

この記事では、TkinterとtimeモジュールといったPython標準ライブラリを使用して、カウントダウンタイマーを作成します。アプリケーションの基本的な機能は、指定した時間の間タイマーを動作させることです。このアプリケーションは以下の要素で構成されています。

  • 時・分・秒(HH/MM/SS)ごとにタイマーを設定するためのEntryウィジェット

  • 関数countdowntimer()を実行するためのButtonウィジェット

  • 入力された文字列をHH・MM・SSに対応する整数値へ変換する関数countdowntimer()

  • update()メソッドを使用して、指定された関数やウィジェットの状態に応じてウィンドウを更新する処理

コード例

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

# tkinterフレームのインスタンスを作成
win = Tk()

# ウィンドウサイズを設定
win.geometry('700x350')

# ウィンドウのサイズ変更を固定
win.resizable(False, False)

# 背景色を設定
win.config(bg='skyblue4')

# 時・分・秒用のEntryウィジェットを作成
sec = StringVar()
Entry(win, textvariable=sec, width=2,
    font='Helvetica 14').place(x=380, y=120)
sec.set('00')

mins = StringVar()
Entry(win, textvariable=mins, width=2, font='Helvetica 14').place(x=346, y=120)
mins.set('00')

hrs = StringVar()
Entry(win, textvariable=hrs, width=2, font='Helvetica 14').place(x=310, y=120)
hrs.set('00')

# タイマー用の関数を定義
def countdowntimer():
    times = int(hrs.get()) * 3600 + int(mins.get()) * 60 + int(sec.get())
    while times > -1:
        minute, second = (times // 60, times % 60)
        hour = 0
        if minute > 60:
            hour, minute = (minute // 60, minute % 60)
        sec.set(second)
        mins.set(minute)
        hrs.set(hour)

        # 時間を更新
        win.update()
        time.sleep(1)
        if (times == 0):
            sec.set('00')
            mins.set('00')
            hrs.set('00')
        times -= 1

# Labelウィジェットを作成
Label(win, font=('Helvetica bold', 22), text='Set the Timer', bg='skyblue4', fg="white").place(x=260, y=70)

# タイマーを開始するButtonウィジェット
Button(win, text='START', bd='2', bg='IndianRed1', font=('Helvetica bold', 10), command=countdowntimer).place(x=335, y=180)

win.mainloop()

実行結果

このコードを実行すると、ウィンドウ内にカウントダウンタイマーが表示されます。

Entryボックスの値を変更してタイマーを設定し、「START」ボタンをクリックすると、指定した時間のカウントダウンがすぐに始まります。残り時間は1秒ごとに更新され、カウントが0になるとすべての表示が「00」に戻ります。

コードのポイント

  • StringVar():Entryウィジェットと変数を連携させ、表示内容を動的に更新できるようにします。

  • time.sleep(1):1秒ごとに処理を一時停止し、カウントダウンの間隔を作ります。

  • win.update():イベントループを手動で実行し、ウィジェットの表示をリアルタイムに反映させます。

  1. Tkinterウィンドウのサイズを固定して変更不可にする方法

    Tkinterでは、ウィジェットのサイズに応じてフレームが自動的にリサイズされることがあります。ウィンドウやフレームのサイズを一定に保ちたい場合は、ウィジェットによるフレームのリサイズを防ぐ必要があります。そのために使える主な方法は以下の3つです。pack_propagate(True/False):ブール値を指定することで、ウィジェットによるフレームのリサイズを防止します。False(0)を指定すると、親フレームは子ウィジェットに合わせてサイズが変わらなくなります。resizable(x, y):ユーザーがマウス操作などでウィンドウ自体のサイズを変更できないようにします。引数には幅と高さそれ

  2. Pythonによるデータ分析と可視化入門!pandas・matplotlibの使い方を解説

    このチュートリアルでは、Pythonのpandasやmatplotlibなどのモジュールを使ったデータ分析と可視化の方法を学びます。Pythonはデータ分析に非常によく適した言語です。まずは以下のコマンドでpandasとmatplotlibをインストールしましょう。 pip install pandas pip install matplotlib インストールが完了すると成功メッセージが表示されます。まずpandasについて学び、その後でmatplotlibを見ていきましょう。 pandasとは pandasはPythonのオープンソースライブラリで、データ分析のための豊富なツールを提供し