· 

電卓もどき

PythonでwindowsGUIをあつかう勉強用に電卓もどきを作ってみました。

+ ― のキーしかありませんがコピペと多少の編集で × / や他の演算も作ることが出来ます。

Excelでやった方が数倍楽ですが python + windowsGUI の値入力と入力値の取得、関数など基本的なことが入っています。

以下のコードをコピペして適当な名前を付け、拡張子を.py または.pyw にすればダブルクリックで動きます。(pythonのインストールは必要です)


# 電卓みたいなもの

 

# windowsGUIモジュールインポート

import tkinter as tk

 

# クリアボタンを押したときの処理 --- (*1)

def clear():                    # 関数

 

    labelAns2['text'] = ""

    

 

# マウスをクリックしたときの処理 --- (*2)

def delA(event):              # クリックイベント関数

    textA.delete(0,tk.END)    # 入力値をデリート

 

def delB(event):

    textB.delete(0,tk.END)

 

# ---------------------------------------------------ここまで    

 

# 演算+ボタンを押したときの処理 --- (*3)

def calc_tasizan():             # 足し算関数

 

    

    # 入力値取得

    

    A = float(textA.get())     # 値1 取得

    B = float(textB.get())     # 値2 取得

        

    # 演算+

    

    C=A+B              # A + B

        

 

    # 結果をラベルに表示

 

    C = "値1 + 値2 =  {:,.15g} ".format(C) # {:,.12g} 書式 ,桁区切り .12 有効桁数(fの場合少数以下桁数) g 汎用フォーマット

    labelAns2['text'] = C

 

# 演算 - ボタンを押したときの処理 --- (*3)

def calc_hikizan():            # 引き算関数

 

    

    # 入力値取得

    

    A = float(textA.get())     # 値1 取得

    B = float(textB.get())     # 値2 取得

        

    # 演算+

    

    C=A-B              # A - B

        

 

    # 結果をラベルに表示

 

    C = "値1 - 値2 =  {:,.12g} ".format(C)

    labelAns2['text'] = C

 

 

# ウィンドウを作成 --- (*5)

win = tk.Tk()

win.title("電卓のようなもの") # タイトル

win.minsize(400, 300)

 

# タイトル表示

canvas = tk.Canvas(win, height=400, width=300)# キャンバスサイズ

 

canvas.place(x=0, y=0)# 配置場所

 

canvas.create_text(180,50,text='なんちゃって電卓',font=('Times',15))

 

# 部品を作成 --- (*6)

 

labelmidashi = tk.Label(win, text=u'入 力 値') # 見出し

labelmidashi.place(x=100, y=100)

 

labelA = tk.Label(win, text=u'値1 :')

labelA.place(x=50, y=125)

 

textA = tk.Entry(win,width=20)

textA.insert(tk.END, '1.12345')

textA.place(x=120, y=125)

textA.bind('<Button>', delA) # クリックイベント

 

labelB = tk.Label(win, text=u'値2 :')

labelB.place(x=50, y=150)

 

textB = tk.Entry(win,width=20)

textB.insert(tk.END, '1.12345')

textB.place(x=120, y=150)

textB.bind('<Button>', delB) # クリックイベント

 

labelAns1 = tk.Label(win, anchor="w",width=20,text=u'答え')      # 見出し

labelAns1.place(x=50, y=175)

 

labelAns2 = tk.Label(win, anchor="w",width=20)      # 答え表示

labelAns2.place(x=80, y=175)

 

# クリアボタン ------------------------------------- (*7)

clearButton = tk.Button(win, text=u'クリア')

clearButton["command"] = clear

clearButton.place(x=120, y=200)

 

# 演算 + ボタン --------------------------------------- (*7)

calcButton = tk.Button(win, text=u'+')

calcButton["command"] = calc_tasizan

calcButton.place(x=170, y=200)

 

# 演算 - ボタン --------------------------------------- (*7)

calcButton = tk.Button(win, text=u'-')

calcButton["command"] = calc_hikizan

calcButton.place(x=200, y=200)

 

# ウィンドウを動かす

win.mainloop()