Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- import math
- class calc:
- def getandreplace(self):
- #заменяем * знаком x и / знаком ÷
- self.expression = self.e.get()
- self.newtext=self.expression.replace('/','/')
- self.newtext=self.newtext.replace('x','*')
- def equals(self):
- #когда нажат знак "равно"
- self.getandreplace()
- try:
- #вычисление результата с помощью math
- self.value= eval(self.newtext)
- except SyntaxError or NameError:
- self.e.delete(0,END)
- self.e.insert(0,'Неправильный ввод')
- else:
- self.e.delete(0,END)
- self.e.insert(0,self.value)
- def squareroot(self):
- #вычисление квадратного корня
- self.getandreplace()
- try:
- #вычисление результата с помощью math
- self.value= eval(self.newtext)
- except SyntaxError or NameError:
- self.e.delete(0,END)
- self.e.insert(0,'Некорректный ввод!')
- else:
- self.sqrtval=math.sqrt(self.value)
- self.e.delete(0,END)
- self.e.insert(0,self.sqrtval)
- def square(self):
- #вычисление квадрата числа
- self.getandreplace()
- try:
- #вычисление результата с помощью math
- self.value= eval(self.newtext)
- except SyntaxError or NameError:
- self.e.delete(0,END)
- self.e.insert(0,'Некорректный ввод!')
- else:
- self.sqval=math.pow(self.value,2)
- self.e.delete(0,END)
- self.e.insert(0,self.sqval)
- def clearall(self):
- #при нажатии удаляется всё из поля ввода
- self.e.delete(0,END)
- def clear1(self):
- self.txt=self.e.get()[:-1]
- self.e.delete(0,END)
- self.e.insert(0,self.txt)
- def action(self,argi):
- """pressed button's value is inserted into the end of the text area"""
- self.e.insert(END,argi)
- def __init__(self,master):
- """Constructor method"""
- master.title('Калькулятор')
- master.geometry()
- self.e = Entry(master)
- self.e.grid(row=0,column=0,columnspan=6,pady=3)
- self.e.focus_set() #устновим фокус на поле ввода
- # Создание кнопок
- Button(master,text="=",width=11,height=3,fg="blue",
- bg="red",command=lambda:self.equals()).grid(
- row=4, column=4,columnspan=2)
- Button(master,text='AC',width=5,height=3, bg="gray",
- command=lambda:self.clearall()).grid(row=1, column=4)
- Button(master,text='C',width=5,height=3,bg="grey",
- command=lambda:self.clear1()).grid(row=1, column=5)
- Button(master,text="+",width=5,height=3,bg="light green",
- command=lambda:self.action('+')).grid(row=4, column=3)
- Button(master,text="x",width=5,height=3,bg="light green",
- command=lambda:self.action('x')).grid(row=2, column=3)
- Button(master,text="-",width=5,height=3,bg="light green",
- command=lambda:self.action('-')).grid(row=3, column=3)
- Button(master,text="÷",width=5,height=3,bg="light green",
- command=lambda:self.action('/')).grid(row=1, column=3)
- Button(master,text="%",width=5,height=3,bg="light green",
- command=lambda:self.action('%')).grid(row=4, column=2)
- Button(master,text="7",width=5,height=3,bg="light blue",
- command=lambda:self.action('7')).grid(row=1, column=0)
- Button(master,text="8",width=5,height=3,bg="light blue",
- command=lambda:self.action(8)).grid(row=1, column=1)
- Button(master,text="9",width=5,height=3,bg="light blue",
- command=lambda:self.action(9)).grid(row=1, column=2)
- Button(master,text="4",width=5,height=3,bg="light blue",
- command=lambda:self.action(4)).grid(row=2, column=0)
- Button(master,text="5",width=5,height=3,bg="light blue",
- command=lambda:self.action(5)).grid(row=2, column=1)
- Button(master,text="6",width=5,height=3,bg="light blue",
- command=lambda:self.action(6)).grid(row=2, column=2)
- Button(master,text="1",width=5,height=3,bg="light blue",
- command=lambda:self.action(1)).grid(row=3, column=0)
- Button(master,text="2",width=5,height=3,bg="light blue",
- command=lambda:self.action(2)).grid(row=3, column=1)
- Button(master,text="3",width=5,height=3,bg="light blue",
- command=lambda:self.action(3)).grid(row=3, column=2)
- Button(master,text="0",width=5,height=3,bg="light blue",
- command=lambda:self.action(0)).grid(row=4, column=0)
- Button(master,text=".",width=5,height=3,bg="light blue",
- command=lambda:self.action('.')).grid(row=4, column=1)
- Button(master,text="(",width=5,height=3,bg="orange",
- command=lambda:self.action('(')).grid(row=2, column=4)
- Button(master,text=")",width=5,height=3,bg="orange",
- command=lambda:self.action(')')).grid(row=2, column=5)
- Button(master,text="√",width=5,height=3,bg="orange",
- command=lambda:self.squareroot()).grid(row=3, column=4)
- Button(master,text="x²",width=5,height=3,bg="orange",
- command=lambda:self.square()).grid(row=3, column=5)
- # Driver Code
- root = Tk()
- obj=calc(root) # object instantiated
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement