Shcoder001

Tkinter Calculator

Mar 3rd, 2023
413
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.87 KB | None | 0 0
  1. import tkinter as tk
  2.  
  3.  
  4. class Calculator:
  5.     def __init__(self, master):
  6.         self.master = master
  7.         master.title("Calculator")
  8.  
  9.         # create entry widget for input and display
  10.         self.entry = tk.Entry(master, width=35, bg='black', fg='white', borderwidth=5)
  11.         self.entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
  12.  
  13.         # create buttons for calculator
  14.         self.button_1 = tk.Button(master, text="1", padx=40, pady=20, command=lambda: self.button_click(1))
  15.         self.button_2 = tk.Button(master, text="2", padx=40, pady=20, command=lambda: self.button_click(2))
  16.         self.button_3 = tk.Button(master, text="3", padx=40, pady=20, command=lambda: self.button_click(3))
  17.         self.button_4 = tk.Button(master, text="4", padx=40, pady=20, command=lambda: self.button_click(4))
  18.         self.button_5 = tk.Button(master, text="5", padx=40, pady=20, command=lambda: self.button_click(5))
  19.         self.button_6 = tk.Button(master, text="6", padx=40, pady=20, command=lambda: self.button_click(6))
  20.         self.button_7 = tk.Button(master, text="7", padx=40, pady=20, command=lambda: self.button_click(7))
  21.         self.button_8 = tk.Button(master, text="8", padx=40, pady=20, command=lambda: self.button_click(8))
  22.         self.button_9 = tk.Button(master, text="9", padx=40, pady=20, command=lambda: self.button_click(9))
  23.         self.button_0 = tk.Button(master, text="0", padx=40, pady=20, command=lambda: self.button_click(0))
  24.  
  25.         self.button_add = tk.Button(master, text="+", padx=39, pady=20, command=self.button_add)
  26.         self.button_subtract = tk.Button(master, text="-", padx=41, pady=20, command=self.button_subtract)
  27.         self.button_multiply = tk.Button(master, text="*", padx=40, pady=20, command=self.button_multiply)
  28.         self.button_divide = tk.Button(master, text="/", padx=41, pady=20, command=self.button_divide)
  29.  
  30.         self.button_clear = tk.Button(master, text="Clear", padx=79, pady=20, command=self.button_clear)
  31.         self.button_equals = tk.Button(master, text="=", padx=91, bg='green', fg='white', pady=20,
  32.                                        command=self.button_equals)
  33.  
  34.         # put buttons on screen
  35.         self.button_1.grid(row=3, column=0)
  36.         self.button_2.grid(row=3, column=1)
  37.         self.button_3.grid(row=3, column=2)
  38.  
  39.         self.button_4.grid(row=2, column=0)
  40.         self.button_5.grid(row=2, column=1)
  41.         self.button_6.grid(row=2, column=2)
  42.  
  43.         self.button_7.grid(row=1, column=0)
  44.         self.button_8.grid(row=1, column=1)
  45.         self.button_9.grid(row=1, column=2)
  46.  
  47.         self.button_0.grid(row=4, column=0)
  48.  
  49.         self.button_add.grid(row=5, column=0)
  50.         self.button_subtract.grid(row=6, column=0)
  51.         self.button_multiply.grid(row=6, column=1)
  52.         self.button_divide.grid(row=6, column=2)
  53.         self.button_clear.grid(row=4, column=1, columnspan=2)
  54.         self.button_equals.grid(row=5, column=1, columnspan=2)
  55.  
  56.     # button click function to add digits to input field
  57.     def button_click(self, number):
  58.         current = self.entry.get()
  59.         self.entry.delete(0, tk.END)
  60.         self.entry.insert(0, str(current) + str(number))
  61.  
  62.     # math operation functions
  63.     def button_add(self):
  64.         first_number = self.entry.get()
  65.         self.entry.delete(0, tk.END)
  66.         self.first_number = float(first_number)
  67.         self.math_operation = "+"
  68.  
  69.     def button_subtract(self):
  70.         first_number = self.entry.get()
  71.         self.entry.delete(0, tk.END)
  72.         self.first_number = float(first_number)
  73.         self.math_operation = "-"
  74.  
  75.     def button_multiply(self):
  76.         first_number = self.entry.get()
  77.         self.entry.delete(0, tk.END)
  78.         self.first_number = float(first_number)
  79.         self.math_operation = "*"
  80.  
  81.     def button_divide(self):
  82.         first_number = self.entry.get()
  83.         self.entry.delete(0, tk.END)
  84.         self.first_number = float(first_number)
  85.         self.math_operation = "/"
  86.  
  87.     # clear and equals functions
  88.     def button_clear(self):
  89.         self.entry.delete(0, tk.END)
  90.  
  91.     def button_equals(self):
  92.         second_number = self.entry.get()
  93.         self.entry.delete(0, tk.END)
  94.  
  95.         if self.math_operation == "+":
  96.             self.entry.insert(0, self.first_number + float(second_number))
  97.  
  98.         elif self.math_operation == "-":
  99.             self.entry.insert(0, self.first_number - float(second_number))
  100.  
  101.         elif self.math_operation == "*":
  102.             self.entry.insert(0, self.first_number * float(second_number))
  103.  
  104.         elif self.math_operation == "/":
  105.             if float(second_number) == 0:
  106.                 self.entry.delete(0, tk.END)
  107.                 self.entry.insert(0, "Error division by zero")
  108.                 return
  109.             self.entry.insert(0, self.first_number / float(second_number))
  110.  
  111.  
  112. root = tk.Tk()
  113. calculator = Calculator(root)
  114. root.mainloop()
  115.  
Advertisement
Add Comment
Please, Sign In to add comment