見出し画像

【Python×GUI】progressbarで処理の進捗を把握してみた

はじめに

 長い処理を実行すると、フリーズしたような状態になります。このため、画面上で処理中であることがわかるように、progressbarを設置しました。progressbarはPCの操作画面などで、処理や作業の進捗状況を棒状の色の変化で表示するGUIの部品(ウィジェット)です。

コードの構成

 ここでは、main1.pysub1.pyという2種類のPythonのプログラムファイルを作成しました。

main1.pyでは、画面にbutton1progressbarを設置し、button1をクリックするとsub1.pyの長い処理が実行される構成にしました。処理の実行中にsub1.py側からprogressbarを動かすようにしました。

main1.pyの内容

main1.pyは、button1、progressbarなどのオブジェクトを画面に設置する内容となっています。

 コードの冒頭で、tkinterをインポートします。tkinterはPythonに標準で付属するGUIライブラリです。また、progressbarを設置するため、ttkをインポートします。tkinterには「tkinter版」と「ttk版」があり、progressbarを使用する場合はttkもインポートします。

main1.pyでは、button1をクリックするとclicked1()が実行され、その中でshori1()が呼び出される内容となっています。shori1()はサブルーチン化し、別ファイルsub1.pyで定義しています。main1.pysub1.pyは連携させる必要があるため、from sub1 import shori1とし、サブルーチンをインポートしておきます。

import tkinter as tk # tkinterのインポート
from tkinter import ttk # ttkのインポート
from sub1 import shori1 # サブルーチンのインポート

# button1の実行
def clicked1():
    shori1(var, root) # sub1.pyのshori1()の実行
    var.set(0) # progressbarの値を0にリセット

# オブジェクトの生成---------------------------
root = tk.Tk()
root.title('サンプル1') # 画面のタイトル
root.geometry('600x340') # 画面のサイズ 
root.resizable(False, False) # 画面サイズを変更しない

# button1の生成
button1 = tk.Button(
    root, # 画面上にbutton1を生成
    text = '  OK  ', # button1の名称
    command = clicked1 # クリック時にclicked1()を実行
)

# progressbarの生成
var=tk.IntVar() # progressbarの変数の作成
pb = ttk.Progressbar(
    root, # 画面上にprogressbarを生成
    mode = 'determinate', # モードの指定
    maximum = 100, # 最大値の指定
    variable = var, # progressbarの変数の指定
)

# オブジェクトの設置
button1.place(x=520,y=30) # button1の設置 
pb.place(x=30,y=310) # progressbarの設置
root.mainloop()

main1.py

sub1.pyの内容

 sub1.pyは、全体がshori1()の関数となっており、for文で1~10,000未満まで繰り返し演算を行う内容となっています。

 処理を繰り返すたびに、progressbar変数がvar.set()で設定され、また、root.update_idletasks()で画面が更新され、progressbarが動くようになります。

def shori1(var, root):
    for i in range(1,10000): # 1~9999まで繰り返し処理
        var.set(i/100) # progressbarの値をセット
        root.update_idletasks() # 画面の更新

sub1.py

オブジェクトの生成について

buttonn1progressbarなどのオブジェクトは、main1.pyのコードを使用することで設定することができます。また、画面のサイズやタイトルの設定などを変えることもできます。記載している内容以外にも様々なオプションが用意されていて、細かな設定ができます。

ChatGPTの活用

 Pythonは、「独習 Python」や「Pythonでデスクトップアプリを作ろう」などの書籍で勉強しています。しかし、ライブラリーの種類が多いため、書籍ですべてを理解することが難しい場合があります。

 そうした場合はWebサイト、どうしてもわからない場合はChatGPTを活用します。Chat GPTはよく間違えるし、使えない印象がありましたが、プログラム言語に関しては結構使える印象です。

 当然、間違えることはありますが、知らないコマンドを教えてくれたり、VSCodeのエラーの内容を教えてくれたり、何行にもわたるコードを一行ずつ解説してくれたり、「ChatGPTってほんまにすごいなあ」と、はじめてそのすごさを実感しました。

気が付けば、本で調べるよりもChat GPTの方が楽なので、Chat GPT漬けの日もあったりします。ぜひ、お試しください。

まとめ

 上記のmain1.pysub1.pyの2つのファイルを作成し、同一のフォルダに格納し、VSCodemain1.pyを実行してください。GUIの操作画面が立ち上がり、ボタンをクリックすると処理を実行することができます。

この記事が気に入ったらサポートをしてみませんか?