python 標準ライブラリのTkinterを使用して、デスクトップアプリを作ってみたいと思います
ファイルを実行すればウインドウが開き、アプリケーションとして様々な機能を持たせることができます
第4回としてEntry(エントリー)ウィジェットを使用して電卓っぽくしていきます
第3回の記事はこちら
・環境
windows 11
python 3.12.2
・計算機能を関数に定義
前回の続きで、ボタンがクリックされたときの処理に計算機能を追加していきます
import tkinter as tk
def button_click(btm): # ボタンが押されたとき
curr =display_num.get() #現在の表示を取得、代入
if btm == "=": # =を押したなら
answer = eval(curr) # eval関数で計算
display_num.set(str(answer)) # 結果を表示
elif btm == "C": # Cを押したなら
display_num.set("") # 表示を空白に
else: # 数字やほかの記号なら
display_num.set(curr + btm) # 現在の表示と記号を合わせて表示
root = tk.Tk()
root.title("calculator")
display_num = tk.StringVar()
display = tk.Entry(root, textvariable=display_num, font=("Arial", 18), width=14, justify="right")
display.grid(row=0, column=0, columnspan=4)
buttons = [
('7', 1, 0), ('8', 1, 1), ('9', 1, 2), ('/', 1, 3),
('4', 2, 0), ('5', 2, 1), ('6', 2, 2), ('*', 2, 3),
('1', 3, 0), ('2', 3, 1), ('3', 3, 2), ('-', 3, 3),
('0', 4, 0), ('.', 4, 1), ('=', 4, 2), ('+', 4, 3),
('C', 5, 0)
]
for (text, row, col) in buttons:
button = tk.Button(root, text=text, font=("Arial", 18), padx=20, pady=20,
command=lambda btm=text: button_click(btm))
button.grid(row=row, column=col)
root.mainloop()
def button_click(btm) の処理を解説していきます
if btm == “=” で、=を押したときの処理を書きます
answer = eval(curr) でeval関数でcurr(現在のdisplay_num)を計算しanswerに代入します
display_num.set(str(answer)) で計算結果を文字列型で表示します
elif btm == “C” で、Cを押したときの処理を書きます
display_num.set(“”) で表示を空白(“”)にします
else で入力されたボタンが数字やほかの記号の時の処理を書きます
display_num.set(curr + btm) で現在のdisplay_numの表示と入力したボタンを合わせて表示します
これで簡単な電卓のアプリが完成しました
さらにボタンを追加すれば累乗や平方根もできると思います
今後、pyinstallerを使ってexe化し、他のPCでも使えるような記事も書きたいと思います
コメント