at backyard

Color my life with the chaos of trouble.

PySimpleGUIで簡単な計算機を作ってみた

PySimpleGUIを試すがてら、簡単な計算機を作ってみました。

PySimpleGUIで作った計算機

2つのフォームに計算したい数値を入れてラジオボタンで足し算、引き算、掛け算、割り算を選択し、Submit を押せば、その下の窓に計算結果が表示されます。

目次

PySimpleGUIでのラジオボタンの実装について

PySimpleGUIの実装方法については下記の公式ドキュメント、ならびにQiitaの記事を参考にさせていただきました。

https://pysimplegui.readthedocs.io/en/latest/#radio-button-element

PysimpleGUIラジオボタンの使い方 - Qiita

足し算、引き算、掛け算、割り算を下記で定義して、リスト内包表記を使ってラジオボタンを生成しています。

実際に書いたコードを一部抜粋して下に載せます。

またコードの全体についてはGitHubに上げていますので、そちらを参照ください。
(一応このポストを書いた状態のコードを v0.0.1 とタグを打っているのでそちらのリンクを貼っておきます)

Release v0.0.1 · shinshin86/pysimplegui-calc-sample · GitHub

calc_dict = {
    "-ADD-": "+ (Add)",
    "-SUB-": "- (Sub)",
    "-MUL-": "* (Mul)",
    "-DIV-": "/ (Div)",
}

・
・
・
calc_frame = [
  ・
  ・
  [sg.Radio(item[1], key=item[0], group_id='calc', default=item[0]=="-ADD-") for item in calc_dict.items()],
  ・
  ・
]

sg.Radioラジオボタンを定義します。

渡す引数は下記のとおりです。

sg.Radio("ラベルテキスト", "-KEY-(※)", group_id='同じIDを付与されたラジオボタンがグループ化される')
# ※PySimpleGUIでは-KEY-というようなスタイルが慣習となっている

なお、下記のようにdefault=True とすると、デフォルトでチェックを入れることが可能です。

sg.Radio("ラベルテキスト", "-KEY-", group_id='同じIDを付与されたラジオボタンがグループ化される', default=True)

上に貼ったコードでは default=item[0]=="-ADD-" とすることで、デフォルトで足し算にチェックを入れるようにしています。

ラジオボタンのチェックに関する値の受け取り方

ラジオボタンの値の受け取りについてはvaluesを通して行います。

実際に書いたコードを必要な部分だけ抜粋して下に載せます。

while True:
    event, values = window.read()

    if values["-ADD-"]:
        # 足し算の処理
    elif values["-SUB-"]:
        # 引き算の処理
    elif values["-MUL-"]:
        # 掛け算の処理
    elif values["-DIV-"]:
        # 割り算の処理

このようにラジオボタンの値は入力テキストと同様に valuesにdictオブジェクトとして格納されているので、dictオブジェクトの値をチェックすることでラジオボタンの選択に応じた処理を行うことが可能です。

なお、ラジオボタンの値はチェックされている場合はTrue、それ以外はFalseが格納されています。

PySimpleGUIとは?

PySimpleGUIとは?という方向けのポストを以前書いていたので、気になる方はそちらを参照してみてください。

shinshin86.hateblo.jp

PyhonでサクッとGUIを作れるのはかなり嬉しいですね。

関連する記事 (tkinterでノートアプリ)

PySimpleGUIと同じような立ち位置としてtkinterというGUIライブラリがあります。

そちらを用いてノートアプリも作成しているので、こちらもよろしければ御覧ください

shinshin86.hateblo.jp