機械系エンジニアの備忘録

20代独身社会人。仕事では機械・機構の研究開発を行っているエンジニアが、自分の専門分野ではないpythonを扱って楽しむブログです。

MENU

【python】【tkinter】【初心者】プログレスバーを使ってみる

tkinterプログレスバーを使ってみる

 

1.  はじめに

今回はプログレスバーを使ってみます。具体的にはSTARTボタンを押すと1秒ずつバーの値が1つ増えていき,バーの値が10になると終了ですと表示するアプリを作ってみます。

 

2.  コード

import tkinter as tk
import tkinter.ttk as ttk

root=tk.Tk()
root.title("プログレスバー")

#プログレスバーの初期設定
progressbar=ttk.Progressbar(root,orient="horizontal",length=300,mode="determinate")
progressbar.pack()
maximum_bar=10
value_bar=0
div_bar=1
progressbar.configure(maximum=maximum_bar,value=value_bar)

#プログレスバーの更新
def var_start(value_bar):
    progressbar.configure(value=value_bar)

#ボタンを押したら1秒ずつカウント、maximumに達したら終了しましたを表示
def Click():
    global value_bar,div_bar,text_label
    for i in range(maximum_bar):
        value_bar+=div_bar
        text_label.set(str(value_bar))
        
        if value_bar==maximum_bar:
            progressbar.after(1000,var_start(value_bar))
            text_label.set("終了しました")
            
        else:
            progressbar.after(1000,var_start(value_bar))
            progressbar.update()

#ボタンとテキストラベルの作成
button=tk.Button(text=u"START",command=Click)
button.pack()
text_label=tk.StringVar()
text_label.set("0")
label=tk.Label(textvariable=text_label)
label.pack()

root.mainloop()

コードを実行すると以下のような画面がでてきます。

f:id:stjun:20190602175319p:plain

STARTボタンを押すとカウントアップが始まり,バーが左から緑色に,また一番したの数字が1秒に1づつ増加していきます。

f:id:stjun:20190602175942p:plain

10秒経つと,バーが緑色で一杯になり,一番下の数字は「終了しました」のテキストに変わります。

f:id:stjun:20190602175958p:plain

 

3. 説明

プログレスバーを以下コードなります。

progressbar=ttk.Progressbar(root,orient="horizontal",length=300,mode="determinate")

horizontalは横向き、lengthはプログレスバーの長さ、determinateは徐々にバーが緑色になる動作(例えばどれだけ動作が完了したか)を示します。

 

次にconfigureを使ってプログレスバーの目盛りを決めます。

今回は0~10まで1ずつ動かしたいので以下のように書いています。

maximum_bar=10 value_bar=0 progressbar.configure(maximum=maximum_bar,value=value_bar)

 

次にプログレスバーの更新ですが、以下のようにプログレスバーのvalieの値を更新する関数を作っておき、.after(1000,var_start(value_bar))で1秒後にその関数が動作するように指定しています。

#プログレスバーの更新
def var_start(value_bar):
    progressbar.configure(value=value_bar)

progressbar.after(1000,var_start(value_bar))

 

■本紹介

pythonを初めて触ろうとした時に読んだ本を紹介します。

 

 この本は、初心者に最適だと思います。確か亀を動かすゲームのようなコードが載っていたと思います。pythonをこれから始めようと思っている人は読んでみて下さい。

また下の入門python3も良い本だと思いますが、分厚いので中々根気が必要です。個人的には最小限必要なことが書いてある薄い本を読み、必要になってからちょっとずつ知識を増やしていくのが良いと思います。

また何度も紹介しますが、以下のニューラルネットワーク自作入門は非常に良い本です、pythonの書き方から記載されているのでいきなり読んでも大丈夫だと思います。

 とりあえず基本的なコードの書き方さえ分かってしまえば、後はネットで知りたい情報にアクセスする方が早いと思います。

 

4. さいごに

 次回は自作タイマーにプログレスバーをくっつけてみたいと思います。

 ↓次回の記事

www.stjun.com