Progressbarとは
これです。

上のプログレスバーは確定的プログレスバー です。Windowsでもお馴染みです。例えばダウンロードの状態などでよく使われます。
上のプログレスバーは不確定的プログレスバー です。緑の■が左右に移動します。これはWindowsではみたことありません。
コードです。
import tkinter as tk
from tkinter import ttk
def increment():
val_determ.set(val_determ.get() + 1)
if val_determ.get() > 5:
val_determ.set(0)
if val_determ.get() == 5:
btn_increment['text'] = 'Reset'
else:
btn_increment['text'] = 'Increment'
def operation():
global running
if running == True:
running = False
pb_indetermin.stop()
btn_operation['text'] = 'Start'
else:
running = True
pb_indetermin.start()
btn_operation['text'] = 'Stop'
if __name__ == '__main__':
root = tk.Tk()
root.title('Progress')
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
# 確定的プログレスバー
val_determ = tk.IntVar(value=1)
pb_determin = ttk.Progressbar(
root,
orient=tk.HORIZONTAL,
variable=val_determ,
maximum=5,
length=200,
mode='determinate')
pb_determin.grid(row=0, column=0, sticky=(tk.N, tk.E, tk.S, tk.W))
# 増加ボタン
btn_increment = tk.Button(
root, text='increment', width=8,
command=increment)
btn_increment.grid(row=0, column=1, padx=5, sticky=(tk.E))
# 不確定的プログレスバー
pb_indetermin = ttk.Progressbar(
root,
orient=tk.HORIZONTAL,
maximum=10,
value=0,
length=200,
mode='indeterminate')
pb_indetermin.grid(row=1, column=0, sticky=(tk.N, tk.E, tk.S, tk.W))
running = True
pb_indetermin.start(100)
# 操作ボタン
btn_operation = tk.Button(
root, text='Stop', width=8,
command=operation)
btn_operation.grid(row=1, column=1, padx=5, sticky=(tk.E))
root.mainloop()
プログレスバーはtkinter.ttk.Progressbarから構築します。
増加ボタンを5回押すとボタン表示がIncrementからResetに変わります。さらに押すと緑のバーがなくなりボタン表示がResetからIncrementに変わります。
操作ボタンを押すと左右に動いている表示が停止します。ボタン表示がStopからStartに変わり動作が停止します。再度押すとボタン表示がSartからStopに変わり動作を開始します。
val_determ = tk.IntVar(value=1)は起動時にバーの位置を設定します。 mode='indeterminate')で確定的プログレスバー
または確定的プログレスバーを規定します。
|