はじめに
初めまして。独学で、プログラミングの学習を行っているえむしたと申します。
今回は、PythonとTKinterを使った電卓開発の備忘録を記録していきます。
拙い記事ではありますが、読んでいただけると幸いです。
使用ツール
言語:Python
FW:TKinter
バージョン管理: Git, GitHub
開発ツール: VScode
要件
・四則演算
・入力した数字をリスト管理し、足し算、掛け算を1つのボタンで合計する
ボタンを押下した際の挙動
ボタンの挙動
current_input = "" #計算式の保持
def on_button_click(value): #ボタン押下処理制御クラス
global current_input #globalを利用し関数外の定義を利用
if value == "C": #value引数に"C"を渡す
current_input = "" #"C"を押下際に保存した計算式を空にする
elif value == "=":
try:
current_input = str(eval(current_input)) #組み込み関数のevalを利用して計算実行
except:
current_input = "エラー" #計算できない場合は"エラー"を返す
else:
current_input += value #"C"か"="以外が押下された場合、フィールドに追加
display.config(text=current_input)
evalについて
今回は、計算方法として、Pythonの組み込み関数であるeval
を利用しています。
evalは渡した文字列をPythonのコードとして評価、実行をしてくれる組み込み関数です
数式の評価
evaluation = "3 + 4 * 2"
result = eval(evaluation)
print(result) #結果は11
このように、文字列として渡したevaluation
を計算式として評価してくれます
変数の評価
x = 10
evaluation = "x * 2"
print(eval(evaluation) #結果は20
また、変数の値も参照して評価してくれるので、個人的にはシンプルで使いやすかったです
ただ、調べてみると任意のコードを実行出来る為"危険性大"との情報もあったので、フィルタリングをかけたり、個人利用のみに絞った方がよさそうな印象でしたので、気を付けようと思います
まとめ
今回は、電卓の"C"と"="のボタン押下した際の挙動を実装しました。
eval
については、実際に利用する場合は掘り下げて危険性を知った上で事故を回避する方法を考えて使おうと思いました。
今回もお読み頂いて