Pythonで作るGUIアプリ入門 Part16 -プログレスバーの設定-
プログレスバーの設定
プログレスバーは、時間のかかる処理などでユーザーに進捗を知らせるために使用されます。プログレスバーは、sg.ProgressBar(max_valu)で設定が出来ます。max_valueには、整数を指定します。
公式ページのCook Bookのコードを参考に説明を加えます。ボタンを押すとプログレスバーが進捗するアプリ図16-1を作成してみましょう。
コードは以下の通りとなります。
import PySimpleGUI as sg
BAR_MAX = 100
layout = [[sg.Text('プログレスバー進捗')],
[sg.ProgressBar(BAR_MAX, orientation='h', size=(20, 20), key='-PROG-')],
[sg.Button('実行',key='-Run-')]]
window = sg.Window('プログレスバー', layout)
while True: # Event Loop
event, values = window.read()
if event == '-Run-':
for i in range(100):
event, values = window.read(timeout=10)
window['-PROG-'].update(i + 1)
break
window.close()
レイアウトの設定
レイアウトの設定に入る前に、max_valueを設定します。今回は、変数BAR _MAX = 100 として設定します。100になった時に、バーは右端に到達します。
1行目では、テキストで’プログレスバー’を表示しています。
2行目でプログレスバーを設定しています。max_valueには、BAR_MAXを指定しています。orientationはプログレスバーが水平 = ‘h‘ か垂直 = ‘v‘ かを指定出来ます。指定しなかった場合は、水平となります。その後、サイズやキーをプロパティーとして指定しています。
3行目では、実行ボタンとそのキーを設定しています。
BAR_MAX = 100
layout = [[sg.Text('プログレスバー進捗')],
[sg.ProgressBar(BAR_MAX, orientation='h', size=(20, 20), key='-PROG-')],
[sg.Button('実行',key='-Run-')]]
イベントの設定
実行ボタン ’-Run-’が押された時のイベントを設定します。for文で100までループさせます。event, values = window.read(timeout=10)では、ウィンドウを10ミリ秒(1000分の1)毎に読み込みます。画面を読み込んだ後は、プログレスバーウィジェットをキーで指定して、 i + 1 でアップデートします。100回繰り返されますので、100 x 10 ミリ秒ですので、約1秒でバーがMaxに到達します。
if event == '-Run-':
for i in range(100):
event, values = window.read(timeout=20)
window.find_element('-PROG-').update(i + 1)
break
プログレスバーを垂直にした場合のコード(変更した行のみ)と図16-2
を示します。説明は割愛いたします。
[sg.ProgressBar(BAR_MAX, orientation='v', size=(20, 20), key='-PROG-')],
以上のようにプログレスバーを設定出来ます。少し時間のかかるような処理は、プログレスバーを表示させてユーザーに進捗を知らせても良いかと思います。何も変化しないと、フリーズしてしまったと勘違いしてしまうかもしれませんので。
GUIアプリ入門講座は毎日更新します!
記事が参考になりましたら、❤️を押していただけると励みになります😊