title: Binding number keys to buttons for calculator
body: <p>How do I go on about doing this? I don't like the the idea of having to press each individual button. I'm really trying to understand all of this. I get the concept of binding I just don't know how to do it. </p>
  
  <pre><code>from tkinter import *
  
  
  class Calc():
      def __init__(self):
          self.total = 0
          self.current = ""
          self.new_num = True
          self.op_pending = False
          self.op = ""
          self.eq_flag = False
  
      def num_press(self, num):
          temp = text_box.get()
          self.eq_flag = False
          temp2 = str(num)      
          if self.new_num == True:
              self.current = temp2
              self.new_num = False
          else:
              if temp2 == '.':
                  if temp2 in temp:
                      return
              self.current = temp + temp2
          text_box.delete(0, END)
          text_box.insert(0, self.current)
  
      def calc_total(self):
          if self.op_pending == True:
              self.do_sum()
              self.op_pending = False
  
      def do_sum(self):
          self.current = float(self.current)
          if self.op == "add":
              self.total += self.current
          if self.op == "minus":
              self.total -= self.current
          if self.op == "times":
              self.total *= self.current
          if self.op == "divide":
              self.total /= self.current
          text_box.delete(0, END)
          text_box.insert(0, self.total)
          self.new_num = True
  
      def operation(self, op):
          if self.op_pending == True:
              self.do_sum()
              self.op = op
          else:
              self.op_pending = True
              if self.eq_flag == False:
                  self.total = float(text_box.get())
              else:
                  self.total = self.current
              self.new_num = True
              self.op = op
              self.eq_flag = False
  
      def cancel(self):
          text_box.delete(0, END)
          text_box.insert(0, "0")
          self.new_num = True
  
      def all_cancel(self):
          self.cancel()
          self.total = 0
  
      def sign(self):
          self.current = -(float(text_box.get()))
          text_box.delete(0, END)
          text_box.insert(0, self.current)
  
  class My_Btn(Button):
      def btn_cmd(self, num):
          self["command"] = lambda: sum1.num_press(num)
  
  sum1 = Calc()
  root = Tk()
  calc = Frame(root)
  calc.grid()
  
  root.title("Calculator")
  text_box = Entry(calc, justify=RIGHT)
  text_box.grid(row = 0, column = 0, columnspan = 4, pady = 5, padx=5)
  text_box.insert(0, "0")
  
  #Buttons
  numbers = "789456123"
  i = 0
  bttn = []
  for j in range(2,5):
      for k in range(3):
          bttn.append(My_Btn(calc, text = numbers[i]))
          bttn[i].grid(row = j, column = k, pady = 5, padx=5)
          bttn[i].btn_cmd(numbers[i])
          i += 1
  clear = Button(calc, text = "C", width =1, height =1)
  clear["command"] = sum1.cancel
  clear.grid(row = 1, column = 0, pady = 5, padx=5)
  
  all_clear = Button(calc, text = "AC", width =1, height =1)
  all_clear["command"] = sum1.all_cancel
  all_clear.grid(row = 1, column = 1, pady = 5, padx=5)
  
  bttn_div = Button(calc, text = chr(247))
  bttn_div["command"] = lambda: sum1.operation("divide")
  bttn_div.grid(row = 1, column = 2, pady = 5, padx=5)
  
  bttn_mult = Button(calc, text = "x", width =1, height =1)
  bttn_mult["command"] = lambda: sum1.operation("times")
  bttn_mult.grid(row = 1, column = 3, pady = 5, padx=5)
  
  minus = Button(calc, text = "-", width =1, height =1)
  minus["command"] = lambda: sum1.operation("minus")
  minus.grid(row = 2, column = 3, pady = 5, padx=5)
  
  add = Button(calc, text = "+", width =1, height =1)
  add["command"] = lambda: sum1.operation("add")
  add.grid(row = 3, column = 3, pady = 5, padx=5)
  
  neg= Button(calc, text = "+/-", width =1, height =1)
  neg["command"] = sum1.sign
  neg.grid(row = 4, column = 3, pady = 5, padx=5)
  
  equals = Button(calc, text = "=", width =1, height =1)
  equals["command"] = sum1.calc_total
  equals.grid(row = 5, column = 3, pady = 5, padx=5)
  
  point = Button(calc, text = ".", width =1, height =1)
  point["command"] = lambda: sum1.num_press(".")
  point.grid(row = 5, column = 2, pady = 5, padx=5)
  
  bttn_0 = Button(calc, text = "0", width =7, height =1)
  bttn_0["command"] = lambda: sum1.num_press(0)
  bttn_0.grid(row=5, column = 0, columnspan = 2, pady = 5, padx=5)
  </code></pre>