Tkinter で作成する超適当な電卓

# 初めに

プログラミング言語に関わらず、物事は、一先ずなんか作ったら習得しやすい！
という気がします。
というわけで、Python、TkinterでのGUIアプリケーション、「超適当な電卓」でございます。
なにか、参考になればです。
解説はしません。自分もよく理解してないんで！
私の友に言わせたら、"feeling to code is important!(?)"だそうです。

# 見て感じて書いて♪

それでは、コードを記載していきます♪

```rb
import tkinter as tk  # Tkinterをインポート

root = tk.Tk()  # アプリケーションウィンドウを作成

# メインクラスを作成
class MyFrame(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        master.title("超適当な電卓")
        
        # 変数いろいろを作成
        self.current = 0
        self.term = 0
        self.option = 1
        
        # ボタン（１～９）を作成
        for c in range(3):
            for r in range(3):
                self.current += 1
                tk.Button(self.master, text=str(self.current), command=lambda x=self.current: self.key(x), width=2).grid(row=3-c, column=r)
        
        # 計算オプションのボタン（足し引きとか）を作成
        self.buttons = ["+", "-", "*", "/"]
        for i in range(len(self.buttons)):
            self.current += 1
            tk.Button(self.master, text=self.buttons[i], command=lambda x=self.current: self.key(x), width=2).grid(row=i+1, column=3)
        
        # 手抜きしてずっと self.current 使ってきたから、ここで再代入
        self.current = 0
        
        # 残りのボタン（0, =, C(clear)）を作成
        tk.Button(self.master, text="0", command=lambda: self.key(0), width=2).grid(row=4, column=0)
        tk.Button(self.master, text="=", command=lambda: self.key(14), width=2).grid(row=3, column=4)
        tk.Button(self.master, text="C", command=lambda: self.key(15), width=2, bg="red").grid(row=1, column=4)
        
        # 計算結果とか表示するところ（エントリ）の作成
        self.entry = tk.Entry(self.master)
        self.entry.grid(row=0, column=0, columnspan=5)
        
    # 関数 [key] の作成
    def key(self, num):
        # 受け取った数字（num）によって処理をする。ようにする♪
        if num > 9:
            if num < 14:
                # オプションの、はい、足し引きとかのボタンの処理です。
                if num == 10: self.option = 1
                if num == 11: self.option = 2
                if num == 12: self.option = 3
                if num == 13: self.option = 4
                
                # このコード、もっと短くしたかったら、下記のようにもできる…ハズ
                #
                # もう、[if] を使用しない
                # self.option = num - 9
                # 以上
                
                self.term = self.current
                self.current = 0
            
            if num == 14 and self.term and self.current:
                # [=]のボタンがクリックされた時、かつ、[self.term]と[self.current]がある時の処理
                # どのオプションのボタンが押されてたかによって処理する♪
                if self.option == 1: self.current = self.term + self.current
                if self.option == 2: self.current = self.term - self.current
                if self.option == 3: self.current = self.term * self.current
                if self.option == 4: self.current = self.term // self.current  # ここでは、少数を扱うことを考えない！めんどいから！（超適当と言われる理由）よって、[/] ではなく、[//] を用いる
            
            if num == 15:
                # [C]のボタンがクリックされた時の処理
                self.term = self.current = 0
        
        else:
            # 押されたボタンが数字のやつ（０～１）だった時の処理
            self.current = self.current * 10 + num
        
        # entryにself.currentを表示させる
        # っと、その前に、entryにもともと入ってた文字列を削除しなきゃあね…
        self.entry.delete(0, tk.END)
        self.entry.insert(0, str(self.current))

frame = MyFrame(root)
frame.grid()

root.mainloop()  # メインループ


```

# 一応最後に（？）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3674822/66cd4797-63c9-0efa-26f1-18c7a9a1eb3a.png)

このコードを実行したらば、こんなウィンドウがポップアップするハズ…です♪
以上♪