田舎社会人のいろいろ学習記

Python、英語、その他いろいろ

【tkinter.ttk】Progressbarの使い方【Python】

f:id:vigilantPotato:20210613125840p:plain
処理の進捗状況を可視化することができる、Progressbarモジュールの概要と使い方をまとめた。より実際的な使い方は、以下の記事を参照。


【スポンサーリンク】


Progressbarの概要

Progressbarには、処理が完了するタイミングが明確で、現在の進捗状況を示すために使用するdeterminate(確定的)モードと、処理が完了するタイミングは不明だが、処理中であることを示すindeterminate(非確定的)モードの2種類が準備されている。

[↑ 目次へ]

Progressbarの使い方(確定的)

以下、Progressbarのdeterminateモードを用いて、ボタンをクリック回数の進捗状況表示させる例を示す。Progressbarオブジェクト生成時に、modeオプションをdeterminateと設定する。

import tkinter
from tkinter import ttk

#ボタンクリック時に実行する関数
def count_up():
    if var.get()<100:
        var.set(var.get()+10)   #値を+10

        
root = tkinter.Tk()

var = tkinter.IntVar(root)  #現在値格納用変数

#プログレスバー(確定的)
pb = ttk.Progressbar(
    root,
    maximum=100,        #最大値
    mode="determinate", #確定的モード
    variable=var,       #変数を設定
    )
pb.pack()

#カウントアップボタン
b = tkinter.Button(
    root,
    text="count up",
    command=count_up,   #クリック時に実行する関数
)
b.pack()

root.mainloop()

実行するとプログレスバーとボタンが表示され、ボタンをクリックするとプログレスバーが進捗していき、10回クリックで最大となる。

f:id:vigilantPotato:20210613125433p:plain
f:id:vigilantPotato:20210613125444p:plain

[↑ 目次へ]


【スポンサーリンク】


Progressbarの使い方(非確定的)

次は、Progressbarのindeterminateモードを用いた例を示す。今度は、Progressbarオブジェクト生成時にmodeオプションをindeterminateと設定する。また、startメソッドを実行すると自動増加モードを開始させる。

import tkinter
from tkinter import ttk

root = tkinter.Tk()

#プログレスバー(非確定的)
pb = ttk.Progressbar(
    root,
    mode="indeterminate", #非確定的モード
    )
pb.start()  #自動増加モード開始
pb.pack()


root.mainloop()

実行するとプログレスバーが表示され、バーが左右に動き続けることで処理中であることを表現している。

f:id:vigilantPotato:20210613125620p:plain
stopメソッドを使用すると、自動増加モードを解除することができる。

[↑ 目次へ]


【スポンサーリンク】


オプション・メソッド

主なオプション・メソッド 動作
mode モード設定(determinate or indeterminate)
orient 向き(horizontal or vertical)
length Progressbarの長さ
value 現在値
maximum 最大値(デフォルトは100)
variable 現在値を格納する変数の設定(確定的モードの例を参照)
.start(interval) 自動増加モードを開始。intervalミリ秒ごとにvalueを増加させる。intervalはデフォルトで50。
.step(amount) valueをamountの値だけ増加させる。デフォルトで1。
.stop() 自動増加モードを終了

【スポンサーリンク】