tkinter で BMI(肥満度体格指数) Python 3.6.2 & Windows

以前やりましたが、今度はtkinterでBMIを計算してみます。

BMIとは1994年にWHOで定めた肥満判定の国際基準です。 体重と身長の関係から算出される、人の肥満度を表す体格指数です。 BMI...

なお、イラストはこちらのサイトのものを使用しています → https://www.ac-illust.com/

画面レイアウト

ウィンドウにFrameウィジェットをpackで配置し、そのFrameの中に色々なウィジェットをgridで配置しています。

Entryウィジェットの利用と、Labelウィジェットに画像を表示する方法は初めてですので後述します。

フォルダ構成

ソースコード

今回はFrameウィジェットを継承したクラスを使用して書きました。

146行目でTkクラスをインスタンス化して、148行目でウィンドウのタイトルを指定し、150行目でフォントを指定し、152行目でAppクラスをインスタンス化し、154行目のmainloopメソッドでメインループを呼び出しイベントを待ちます。
7行目class App(Frame):でtkinterのFrameクラスを継承してAppクラスを定義します。
Frameウィジェットは、それ自体は見えないウィジェットですが、その中に他のウィジェットを配置して使います(HTMLのdivタグみたいなもの)。
13行目でFrameクラスのコンストラクタを呼び、17行目で自らをpackで配置します。
packでの配置は、言葉では説明しづらいのですが、標準では縦中央に配置します。packの次にまたpackすると、その下に配置されます。オプションで左よせ、右よせ、上よせ、下よせなどができます。
34行目でEntryウィジェットが出てきます。Entryウィジェットは1行のテキスト入力です(HTMLのinput type=”text”みたいなもの)。複数行テキスト入力の場合はTextウィジェットを使います。
37行目。focusメソッドでEntryウィジェットにフォーカスを当てます。focusはfocus_setの別名ですのでfocus_set()を使用しても同じです。
39行目。bind(“<Return>”, self.calc)とは、Enterキーを押すイベントと、メソッドのcalcを呼ぶことをバインド(縛る)します。つまりEnterキーを押すとメソッドcalcを呼びます。
イベントには下の他にも色々あります。
<Button-1> マウス左クリック
<Button-3> マウス右クリック
<Double-Button-1> マウス左ダブルクリック
<space> spaceキーが押された時
<Control-Key-f> Ctrlキーとfキーが押された
などなど
56行目。command=self.calcでボタンが押された時にcalcメソッドを実行します。
64行目。22行目で定義したStringVarの変数をLabelの内容に関連付けます。
68行目。PhotoImageオブジェクトを作成。
71行目。LabelにPhotoImageオブジェクトを表示する。jpg画像は別の方法でないと表示できません(PILを使用)。
74行目。計算ボタンが押されるか、Enterボタンが押された時に発動するメソッド。
82行目。Entryの内容を取得するのはget()メソッド。
85行目。BMIを計算。
87行目。適正体重を計算。
93行目。PhotoImageのオブジェクトのfileを変更。
95行目。lab7のオブジェクトのimageを変更。
140行目。Entryの文字を消すには、delete(0, END)。

実行結果の画像

シェアする

  • このエントリーをはてなブックマークに追加

フォローする