PythonでGUIアプリケーションを作成する際、プログレスバーは非常に便利なウィジェットです。特に、時間のかかる作業の進捗状況をユーザーに視覚的に示すことができます。
プログレスバーの種類
PythonのTkinterでは、プログレスバーには主に2つの種類があります。
- 確定的 (determinate) プログレスバー: これは、最大の値が例えば100で、現在の進捗が20だから、20%の長さを表示するというやり方です。プログレスバーが徐々に伸びていき、最後まで伸びたら作業が終了する、というタイプです。
- 不確定的 (indeterminate) プログレスバー: 作業の終了タイミングが不確定でいつ作業が終わるか分からない場合に使用します。プログレスバーは右へ、左へ動き回ります。
これらのモードは、mode
オプションで設定できます。
プログレスバーの作成
以下に、Tkinterを使って確定的なプログレスバーと不確定的なプログレスバーを作成するサンプルコードを示します。
from tkinter import *
from tkinter import ttk
def button_click():
pbval.set(pbval.get() + 1)
if pbval.get() > 10:
pbval.set(0)
if __name__ == '__main__':
root = Tk()
ttk.Style().theme_use('classic')
root.title('Progress')
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
frame1 = ttk.Frame(root, padding=10)
frame1.grid(sticky=(N, W, S, E))
frame1.columnconfigure(0, weight=1)
frame1.rowconfigure(0, weight=1)
pbval = IntVar(value=3)
pb = ttk.Progressbar(frame1, orient=HORIZONTAL, variable=pbval, maximum=10, length=200, mode='determinate')
pb.grid(row=0, column=0, sticky=(N, E, S, W))
button1 = ttk.Button(frame1, text='OK', width=5, command=button_click)
button1.grid(row=0, column=1, padx=5, sticky=(E))
pb2 = ttk.Progressbar(frame1, orient=HORIZONTAL, maximum=10, value=0, length=200, mode='indeterminate')
pb2.grid(row=1, column=0, sticky=(N, E, S, W))
このコードでは、上側のプログレスバーが確定的で、下側のプログレスバーが不確定的です。
以上がPythonのTkinterでプログレスバーを作成し活用する基本的な方法です。これを参考に、自分のアプリケーションに適したプログレスバーを作成してみてください。.