Pythonで計算機を作る

投稿日: 2024年2月17日

この記事ではPythonで計算機を作っていきます。

完成図は以下のようになります。小さいサイズですがサンプルのコードをいじって調整することも可能です。

何故計算機かというとコード量が少なく基本を作ってしまえばカスタムしやすいからです。

まず最初に、PySimpleGUIをインストールします。

pip install PySimpleGUI

このフレームワークはPythonのGUI作成を簡素化し、コードを読みやすく、書きやすくします。以下のステップに従って、基本的な計算機アプリの作成方法を詳細に説明します。

ステップ 1: PySimpleGUIのインポート

PySimpleGUIライブラリをインポートします。これにより、GUIコンポーネントを作成し、アプリケーションウィンドウを構築できます。

import PySimpleGUI as sg

ステップ 2: レイアウトの定義

計算機のUIは、ボタンと入力フィールドから構成されます。

これらの要素を配置するために、レイアウトをリストの形式で定義します。各リスト内の要素は、ウィンドウの一行に対応し、sg.Buttonやsg.Inputのようなウィジェットを配置します。

layout = [
    [sg.Input(size=(25, 1), key='-DISPLAY-')],  # 結果表示用の入力フィールド
    [sg.Button('7'), sg.Button('8'), sg.Button('9'), sg.Button('/')],  # 数字と演算子のボタン
    [sg.Button('4'), sg.Button('5'), sg.Button('6'), sg.Button('*')],
    [sg.Button('1'), sg.Button('2'), sg.Button('3'), sg.Button('-')],
    [sg.Button('0'), sg.Button('.'), sg.Button('='), sg.Button('+')],
    [sg.Button('Clear')]  # クリアボタン
]

ステップ 3: ウィンドウの作成

定義したレイアウトを使用して、アプリケーションのウィンドウを作成します。sg.Windowを使い、ウィンドウのタイトルとレイアウトを指定します。

window = sg.Window('計算機', layout)

ステップ 4: イベントループの作成

アプリケーションウィンドウが表示された後、ユーザーの入力を処理するためのイベントループを作成します。ユーザーがボタンをクリックすると、そのボタンに対応するイベントが生成され、適切なアクションを実行します。

while True:
    event, values = window.read()
    if event in (None, 'Exit'):
        break
    # ここでイベントに応じた処理を行う

ステップ 5: 計算処理の実装

ユーザーからの入力に応じて計算を行い、結果を表示するための関数を実装します。例えば、数字や演算子がクリックされた場合、その値を取得し、表示エリアに追加します。イコールボタンがクリックされた場合は、表示エリアの式を評価し、結果を表示します。

def calculate(event, values):
    if event in '1234567890+-*/':
        current = values['-DISPLAY-']
        new_value = current + event
        return new_value
    elif event == '=':
        try:
            result = str(eval(values['-DISPLAY-']))
            return result
        except:
            return 'Error'
    elif event == 'Clear':
        return ''

ステップ 6: イベント処理の更新

イベントループ内で、calculate関数を呼び出して計算を実行し、結果を表示フィールドに更新します。

    result = calculate(event, values)
    window['-DISPLAY-'].update(result)

ステップ 7: アプリケーションの終了処理

ユーザーがウィンドウを閉じるか、終了イベントが発生した場合、イベントループを終了し、ウィンドウを閉じます。

window.close()

このガイドに従って、PySimpleGUIを使用して基本的な計算機アプリを作成することができます。このフレームワークは非常に柔軟で、さらに複雑な機能や改善を加えることが可能です。

🔳.全体のコード

全体のコードは以下のようになります。

import PySimpleGUI as sg

# 計算機のレイアウトを定義
layout = [
    [sg.Input(size=(25, 1), key='-DISPLAY-')],
    [sg.Button('7'), sg.Button('8'), sg.Button('9'), sg.Button('/')],
    [sg.Button('4'), sg.Button('5'), sg.Button('6'), sg.Button('*')],
    [sg.Button('1'), sg.Button('2'), sg.Button('3'), sg.Button('-')],
    [sg.Button('0'), sg.Button('.'), sg.Button('='), sg.Button('+')],
    [sg.Button('Clear')]
]

# ウィンドウを作成
window = sg.Window('計算機', layout)

# 計算を行う関数
def calculate(event, values):
    if event in '1234567890+-*/':
        current = values['-DISPLAY-']
        new_value = current + event
        return new_value
    elif event == '=':
        try:
            result = str(eval(values['-DISPLAY-']))
            return result
        except:
            return 'Error'
    elif event == 'Clear':
        return ''

# イベントループ
while True:
    event, values = window.read()
    if event in (None, 'Exit'):
        break
    result = calculate(event, values)
    window['-DISPLAY-'].update(result)

window.close()

これで実行すると以下のようになります。

少ないコード量で簡単な計算機ができました。余計なデータがない分軽量になります。

記事