Advertisement
krein

GUI_calc

Aug 17th, 2019
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.65 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter import messagebox
  3. from tkinter import ttk
  4.  
  5. root = Tk()
  6. root.title('Calculator')
  7.  
  8.  
  9. # logic of calc
  10. def calc(key):
  11.     global memory
  12.     if key == "=":
  13.         str1 = '-+/*0123456789.'
  14. # here we exclude letters
  15.         if calc_entry.get()[0] not in str1:
  16.             #calc_entry.insert(END, 'First symb is not a num!')
  17.             messagebox.showerror(' Error!', 'Entered not a num')
  18. # countings
  19.         try:
  20.             result = eval(calc_entry.get())
  21.             calc_entry.insert(END, "=" + str(result))
  22.         except:
  23.             #calc_entry.insert(END, "Error!")
  24.             messagebox.showerror("Error!", "Check data validation")
  25. # clear field
  26.     elif key == "C":
  27.         calc_entry.delete(0, END)
  28. # change +-
  29.     elif key == "-/+":
  30.         if "=" in calc_entry.get():
  31.             calc_entry.delete(0, END)
  32.         try:
  33.             if calc_entry.get()[0] == "-":
  34.                 calc_entry.delete(0)
  35.             else:
  36.                 calc_entry.insert(0, "-")
  37.         except IndexError:
  38.             pass
  39.     else:
  40.         if "=" in calc_entry.get():
  41.             calc_entry.delete(0, END)
  42.         calc_entry.insert(END, key)
  43.  
  44.  
  45. # here we create buttons
  46. bttn_list = [
  47.     '7', '8', '9', '+', '-',
  48.     '4', '5', '6', '*', '/',
  49.     '3', '2', '1', '-/+', '=',
  50.     '0', '.', 'C', '', ''
  51. ]
  52.  
  53. r = 1
  54. c = 0
  55.  
  56. for i in bttn_list:
  57.     rel = ""
  58.     cmd = lambda x=i: calc(x)
  59.     ttk.Button(root, text=i, command=cmd).grid(row=r, column=c)
  60.     c += 1
  61.     if c > 4:
  62.         c = 0
  63.         r += 1
  64.  
  65. calc_entry = Entry(root, width=33)
  66. calc_entry.grid(row=0, column=0, columnspan=5)
  67.  
  68. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement