Tkinterでダウンロードプログレスバーを実装する方法を解説
ファイルのダウンロードや進捗状況の追跡など、外部ソースやファイルとやり取りするアプリケーションを開発する場合、処理の進行状況をユーザーに視覚的に伝えるプログレスバーがあると便利です。
Tkinterでプログレスバーを作成するには、tkinter.ttkパッケージに含まれるProgressbarモジュールを使用します。まずProgressbarオブジェクトをインスタンス化し、向き(orientation)をHORIZONTAL(水平方向)に設定します。その後、プログレスバーの値を増加させながら継続的に更新する関数を定義することで、ダウンロードの進捗を表現できます。
サンプルコード
以下の例では、プログレスバーの値を更新しながら、ダウンロード用のプログレスバーを作成しています。
# 必要なライブラリをインポート
from tkinter import *
from tkinter.ttk import *
import time
# tkinterフレームのインスタンスを作成
win = Tk()
# フレームのサイズを設定
win.geometry("620x400")
# プログレスバーを進める関数を定義
def start():
task = 10
x = 0
while(x < task):
time.sleep(1)
bar['value'] += 10
x += 1
win.update_idletasks()
# 水平方向のプログレスバーを作成
bar = Progressbar(win, orient=HORIZONTAL, length=300)
bar.pack(pady=20)
# ボタンを作成
Button(win, text="Download", command=start).pack(pady=20)
win.mainloop()コードのポイント
- time.sleep(1):1秒ごとに処理を一時停止し、実際のダウンロードのように徐々に進捗が進む様子を再現しています。
- bar['value'] += 10:プログレスバーの値を10ずつ増加させます。最大値はデフォルトで100に設定されているため、10回のループで100%に到達します。
- win.update_idletasks():メインループをブロックしたままGUIを再描画するために呼び出します。これがないと、画面上でプログレスバーが更新されません。
実行結果
このコードを実行すると、ウィンドウにダウンロード用のプログレスバーと「Download」ボタンが表示されます。「Download」ボタンをクリックすると、プログレスバーが自動的に進行し、約10秒かけて完了まで達します。

応用のヒント
実際のファイルダウンロードに組み込む場合は、urllib.requestやrequestsライブラリと組み合わせて、ダウンロード済みバイト数から進捗率を計算し、bar['value']に反映させるのが一般的です。また、長時間の処理ではUIが固まるのを防ぐため、threadingモジュールを使って別スレッドでダウンロード処理を行う方法も検討するとよいでしょう。
-
Tkinterで簡単な画面(ウィンドウ)を作成する方法【初心者向け】
Pythonの標準GUIライブラリ「Tkinter」を使えば、わずか数行のコードで簡単な画面(ウィンドウ)を作成できます。追加のインストールは不要で、Pythonさえあればすぐに試せるのが魅力です。この記事では、Tkinterによる基本的なウィンドウの作り方を手順付きで解説します。 作成手順(アルゴリズム) シンプルな画面を作る流れは、以下の3ステップです。 ステップ1:tkinterモジュールをインポートする ステップ2:Tkクラスのオブジェクト(ウィンドウ)を作成する ステップ3:イベントループを開始して画面を表示する サンプルコード import tkinter as tk # ウィン
-
Tkinterでスプラッシュ画面を作成する方法をわかりやすく解説
アプリケーションを起動した際に一瞬だけ表示される「スプラッシュ画面」。ロゴや読み込み中表示などを映し出すことで、アプリに洗練された印象を与えられます。Pythonの標準GUIライブラリであるTkinterを使えば、このスプラッシュ画面も簡単に実装できます。スプラッシュ画面作成の基本手順Tkinterでスプラッシュ画面を作成するには、以下の手順に従います。ラベルなどを配置したスプラッシュ画面を作成するoverrideredirectメソッドを使って、スプラッシュ画面を枠なし(ボーダーレス)にするスプラッシュ画面の直後に表示されるメインウィンドウを生成する関数を定義するafterメソッドを使って、