見出し画像

Pythonで作るGUIアプリ入門 Part16 -プログレスバーの設定-

プログレスバーの設定

プログレスバーは、時間のかかる処理などでユーザーに進捗を知らせるために使用されます。プログレスバーは、sg.ProgressBar(max_valu)で設定が出来ます。max_valueには、整数を指定します。

公式ページのCook Bookのコードを参考に説明を加えます。ボタンを押すとプログレスバーが進捗するアプリ図16-1を作成してみましょう。

図16-1


コードは以下の通りとなります。

import PySimpleGUI as sg

BAR_MAX = 100

layout = [[sg.Text('プログレスバー進捗')],
          [sg.ProgressBar(BAR_MAX, orientation='h', size=(2020), 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=(2020), 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
を示します。説明は割愛いたします。

図16-2


[sg.ProgressBar(BAR_MAX, orientation='v', size=(2020), key='-PROG-')],

以上のようにプログレスバーを設定出来ます。少し時間のかかるような処理は、プログレスバーを表示させてユーザーに進捗を知らせても良いかと思います。何も変化しないと、フリーズしてしまったと勘違いしてしまうかもしれませんので。

GUIアプリ入門講座は毎日更新します!
記事が参考になりましたら、❤️を押していただけると励みになります😊

いいなと思ったら応援しよう!