デスクトップアプリ

【初心者でも簡単】PythonでWindowsデスクトップアプリを作る

「デスクトップアプリを作りたい!」

「Pythonでデスクトップアプリを作るにはどうしたらいいの?」

Pythonを勉強して、デスクトップアプリが作れると知ったけど、作り方がわからない

そんな方向けにPythonでデスクトップアプリを作り方について解説していきます。

本記事では、Python初心者の僕でも作れた。簡単デスクトップアプリの作り方を紹介します。

環境

  • Windows 11
  • Python 3.10.7
  • IDEL

デスクトップアプリを作るのに使用したライブラリ

今回使用したライブラリはPySimpleGUIを使用しています。

使用するにはライブラリをインストールする必要があります。

今回はWindowsでデスクトップアプリを作るのでWindowsを使用の方はコマンドプロンプトにて

pip install PySimpleGUI

と入力してPySimpleGUIをインストールしてください。

上のように出てきたらインストール完了です。

デスクトップアプリを作るためのソースコード

完成したデスクトップアプリ

今回作ったデスクトップアプリは住宅ローンの借り入れに対して月々いくらの返済になるのかを計算するアプリです。

完成したのがこちらです。

今回は僕が家を買う時の予算と不動産屋さんに見積もってもらった時の金利の年利率0.6%で35年ローンを想定しました。

計算するボタンを押すとこのように計算してくれます。↓

開発環境(IDEL)

Pythonをインストールすると同時にインストールされる開発環境です。

開くと

この画面が出てくるので左上のFileからNew Fileを選ぶと次の画面が出てきます。

ここにコードを書いていきます。

コードを書き終えたらFileからSaveで保存します。

保存したら、Run Moduleを押すとアプリが開かれます。

ソースコード解説

実際にコードを書いていきましょう。

アプリを作るコードを紹介します。

import PySimpleGUI as sg

# GUIのレイアウトを定義する
layout = [
    [sg.Text('借入金額'), sg.Input("3000",key='LOAN'),sg.Text('万円')],
    [sg.Text('年利率'), sg.Input("0.6",key='RATE')],
    [sg.Text('返済期間'), sg.Input("35",key='TERM'), sg.Text('年')],
    [sg.Button('計算する')],
    [sg.Text('毎月の返済額: '), sg.Text(size=(20,1), key='MONTHLY_PAY')],
    [sg.Text('総返済額: '), sg.Text(size=(20,1), key='TOTAL_PAY')]
]

# GUIのウィンドウを作成する
window = sg.Window('ローンシミュレーションアプリ', layout)

# イベントループを開始する
while True:
    event, values = window.read()
    
    # ウィンドウが閉じられた場合、ループを抜ける
    if event == sg.WINDOW_CLOSED:
        break
        
    # 「計算する」ボタンがクリックされた場合、入力値から返済額を計算する
    if event == '計算する':
        if values['LOAN'] == '' or values['RATE'] == '' or values['TERM'] == '':
            sg.popup_error('入力値が不正です。全ての項目に数値を入力してください。')
            continue

        loan = float(values['LOAN'])
        rate = float(values['RATE'])
        term = int(values['TERM']) * 12  # ヶ月数に変換する
        monthly_rate = rate / 12 / 100  # 月利率に変換する
        monthly_pay = loan *10000* monthly_rate / (1 - (1 + monthly_rate) ** -term)
        total_pay = monthly_pay * term
        window['MONTHLY_PAY'].update('{:.2f}円'.format(monthly_pay))
        window['TOTAL_PAY'].update('{:.2f}円'.format(total_pay))
        
# ウィンドウを閉じる
window.close()

一つずつ解説していきます。

PySimpleGUIをインポート

import PySimpleGUI as sg

最初のこのコードでPySimpleGUIをインポートします。

レイアウトを設定する

PySimpleGUIではレイアウトを設定するとき、設定したい並び順にコードを[]の中に書いて改行することで配置を設定できます。

 layout = [

]

1行の中に複数の項目を入れたいときは、カンマで区切ることで文字やインプットボックスを1行に複数入れられます。

  [sg.Text('借入金額'), sg.Input("3000",key='LOAN'),sg.Text('万円')],

合わせたのがこちら

layout = [
    [sg.Text('借入金額'), sg.Input("3000",key='LOAN'),sg.Text('万円')],
    [sg.Text('年利率'), sg.Input("0.6",key='RATE')],
    [sg.Text('返済期間'), sg.Input("35",key='TERM'), sg.Text('年')],
    [sg.Button('計算する')],
    [sg.Text('毎月の返済額: '), sg.Text(size=(20,1), key='MONTHLY_PAY')],
    [sg.Text('総返済額: '), sg.Text(size=(20,1), key='TOTAL_PAY')]
]

ボタンを押した時とウィンドウを閉じた時の設定コード

# イベントループを開始する
while True:
    event, values = window.read()

このコードでボタンを押した時にイベントを実行します。

# ウィンドウが閉じられた場合、ループを抜ける
    if event == sg.WINDOW_CLOSED:
        break

このコードでウィンドウが閉じた時にイベントの実行をやめます。

ボタンを押した時に実行するコード

 # 「計算する」ボタンがクリックされた場合、入力値から返済額を計算する
    if event == '計算する':
        if values['LOAN'] == '' or values['RATE'] == '' or values['TERM'] == '':
            sg.popup_error('入力値が不正です。全ての項目に数値を入力してください。')
            continue

計算するボタンを押した時にインプットボックスが空欄だった時にエラーメッセージを出すコードです。

        loan = float(values['LOAN'])
        rate = float(values['RATE'])
        term = int(values['TERM']) * 12  # ヶ月数に変換する
        monthly_rate = rate / 12 / 100  # 月利率に変換する
        monthly_pay = loan *10000* monthly_rate / (1 - (1 + monthly_rate) ** -term)
        total_pay = monthly_pay * term
        window['MONTHLY_PAY'].update('{:.2f}円'.format(monthly_pay))
        window['TOTAL_PAY'].update('{:.2f}円'.format(total_pay))

月々の返済額を計算するコードとその結果をテキストとして表示するコードです。

このコード部分は作るアプリによっても変わってくる部分になります。

参考書籍

今回、デスクトップアプリを作るうえで勉強した書籍を紹介します。

この1冊でも簡単なデスクトップアプリなら作れるようになります。

  • Python2年生 デスクトップアプリ開発のしくみ

Python初心者がWindowsデスクトップアプリを作ってみて

今回、書籍やサイトなどで勉強して作ってみたのですが、紹介した書籍の2章まででデスクトップアプリを作る基礎的な部分は理解できる内容でした。

基礎を勉強してからは、作りたい内容によって勉強方法は変わってくると思います。自分の作りたいアプリを作る前に一度、今回のアプリを作るとプログラミングでアプリを作る勉強になるのでぜひやってみてください。