Pythonで「割り勘アプリ」を作ってみよう! 初心者でも簡単にできるデスクトップアプリの作り方|翔泳社の本

Pythonで「割り勘アプリ」を作ってみよう! 初心者でも簡単にできるデスクトップアプリの作り方

2022/12/26 07:00

 プログラミング初心者向けの入門書『Python2年生 デスクトップアプリ開発のしくみ』から、計算アプリの1つである「割り勘アプリ」の作り方を紹介します。簡単なコードを扱うため、初めてPythonに触る人でも作りやすいのではないでしょうか。とりあえず何かデスクトップアプリを作ってみたいと考えている人におすすめです。

 本記事は『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()で表示します。

例:ボタンを押したら、1人分を計算する関数
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()
割り勘アプリが完成
Python2年生 デスクトップアプリ開発のしくみ 体験してわかる!会話でまなべる!

Amazon  SEshop  その他

 
Python2年生 デスクトップアプリ開発のしくみ
体験してわかる!会話でまなべる!

著者:森巧尚
発売日:2022年12月19日(月)
定価:2,420円(本体2,200円+税10%)

本書について

本書は初心者にも簡単に作れる方法を使ってデスクトップアプリ開発の基本をやさしく解説します。スマホアプリ、Webアプリに比べて、手軽に取り組めますので挫折することなく学習できます。