本記事は『Python2年生 デスクトップアプリ開発のしくみ 体験してわかる!会話でまなべる!』の「第3章 計算アプリを作ろう」から「LESSON 09 割り勘アプリ」を抜粋したものです。掲載にあたって内容を一部編集しています。
なお、Pythonのインストールや環境構築については各自でお願いします。
LESSON 09 割り勘アプリ
「金額と人数を入力すると、1人分の金額を表示するアプリ」を作りましょう。
割り勘アプリの計画
1人分の金額は「総支払額÷人数」で計算できます。総支払額を変数「in1」、人数を変数「in2」として「in1 / in2」で求めましょう。この結果を、f文字列を使って「1人、○円です。」と表示させたいと思います。割り切れない場合もあるので小数点以下2桁まで表示するとして、「f"1人、{in1 / in2 :.2f}円です。"」と指定します。テストとして、1000円を4人で割り勘するプログラムを作ってみましょう。以下のプログラムを実行してください。
in1 = 1000 in2 = 4 txt = f"1人、{in1 / in2 :.2f}円です。" print(txt)
1人、250.00円です。
割り勘アプリのレイアウト
次は、アプリの画面を考えます。金額と人数を入力して、ボタンを押して、結果を表示するので、必要な部品は「金額の入力欄(in1)」と「人数の入力欄(in2)」と「実行ボタン(btn)」と「結果表示のテキスト(txt)」です。ですが、この部品だけでアプリを作ると、始めて使う人にはよくわからない画面になってしまいます。
そこで、説明文のテキストを追加しましょう。
これをlayoutのリストにすると以下のようになります。「結果表示」のテキストは、実行すれば表示されますが、最初はなにも表示しないので「sg.T(k="txt")」と空っぽのテキストを配置します。
layout = [[sg.T("金額と人数を入力してください。")], [sg.T("金額"),sg.I(k="in1")], [sg.T("人数"),sg.I(k="in2")], [sg.B(" 実行 ", k="btn"), sg.T(k="txt")]]
割り勘アプリを作る
それでは「割り勘アプリ」を作ってみましょう。
ボタンを押したら実行するexecute()関数を「test305.py」の計算方法で作ります。結果はupdate()で表示します。
def execute(): in1 = int(v["in1"]) in2 = int(v["in2"]) txt = f"1人、{in1 / in2 :.2f}円です。" win["txt"].update(txt)
参考用のデフォルト値として、Inputの「in1」には"1000"、「in2」には"4"を入れておきましょう。
import PySimpleGUI as sg sg.theme("DarkBrown3") layout = [[sg.T("金額と人数を入力してください。")], [sg.T("金額"),sg.I("1000", k="in1")], [sg.T("人数"),sg.I("4", k="in2")], [sg.B(" 実行 ", k="btn"), sg.T(k="txt")]] win = sg.Window("割り勘アプリ", layout, font=(None,14), size=(320,150)) def execute(): in1 = int(v["in1"]) in2 = int(v["in2"]) txt = f"1人、{in1 / in2 :.2f}円です。" win["txt"].update(txt) while True: e, v = win.read() if e == "btn": execute() if e == None: break win.close()