![見出し画像](https://assets.st-note.com/production/uploads/images/131855500/rectangle_large_type_2_fdb8b15b857b117d278063e8ef923259.png?width=800)
【Python×GUI】progressbarで処理の進捗を把握してみた
はじめに
長い処理を実行すると、フリーズしたような状態になります。このため、画面上で処理中であることがわかるように、progressbarを設置しました。progressbarはPCの操作画面などで、処理や作業の進捗状況を棒状の色の変化で表示するGUIの部品(ウィジェット)です。
コードの構成
ここでは、main1.pyとsub1.pyという2種類のPythonのプログラムファイルを作成しました。
main1.pyでは、画面にbutton1とprogressbarを設置し、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.pyとsub1.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
オブジェクトの生成について
buttonn1やprogressbarなどのオブジェクトは、main1.pyのコードを使用することで設定することができます。また、画面のサイズやタイトルの設定などを変えることもできます。記載している内容以外にも様々なオプションが用意されていて、細かな設定ができます。
ChatGPTの活用
Pythonは、「独習 Python」や「Pythonでデスクトップアプリを作ろう」などの書籍で勉強しています。しかし、ライブラリーの種類が多いため、書籍ですべてを理解することが難しい場合があります。
そうした場合はWebサイト、どうしてもわからない場合はChatGPTを活用します。Chat GPTはよく間違えるし、使えない印象がありましたが、プログラム言語に関しては結構使える印象です。
当然、間違えることはありますが、知らないコマンドを教えてくれたり、VSCodeのエラーの内容を教えてくれたり、何行にもわたるコードを一行ずつ解説してくれたり、「ChatGPTってほんまにすごいなあ」と、はじめてそのすごさを実感しました。
気が付けば、本で調べるよりもChat GPTの方が楽なので、Chat GPT漬けの日もあったりします。ぜひ、お試しください。
まとめ
上記のmain1.pyとsub1.pyの2つのファイルを作成し、同一のフォルダに格納し、VSCodeでmain1.pyを実行してください。GUIの操作画面が立ち上がり、ボタンをクリックすると処理を実行することができます。
この記事が気に入ったらサポートをしてみませんか?