Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import math as m
- from tkinter import *
- types = [("cos", 1), ("sin", 2), ("tan", 3), ("ctg", 4)]
- GR = [("Rad", 1), ("Grad", 2)]
- class windowCalc:
- def __init__(self):
- self.window = Tk()
- self.window.title("Calculator example")
- self.row = 0
- self.entryValue = StringVar()
- self.entryValue.set("")
- self.inputType = IntVar()
- self.funType = IntVar()
- self.result = StringVar()
- self.entryValue.set("")
- Label(text = "Введите число:")\
- .grid(row = self.row, column = 0, sticky = "w")
- Entry(text = 0, textvariable = self.entryValue)\
- .grid(row = self.row, column = 1, sticky = "w")
- self.row +=1
- i = 0
- for type, value_type in GR:
- Radiobutton(text = type, value = value_type, variable = self.inputType)\
- .grid(row = self.row, column = i)
- i+=1
- self.row +=1
- i = 0
- for fun_type, fun_value_type in types:
- Radiobutton(text = fun_type, value = fun_value_type, variable = self.funType)\
- .grid(row = self.row, column = i)
- i+=1
- self.row +=1
- Button(text = "Решить", command = self.eval)\
- .grid(row = self.row)
- self.row += 1
- Label(text = "Результат = ")\
- .grid(row = self.row, column = 0)
- Label(textvariable = self.result)\
- .grid(row = self.row, column = 1)
- self.row+=1
- def eval(self):
- value:float = self.getValue()
- type = self.funType.get()
- if type == 1:
- self.result.set(m.cos(value))
- elif type == 2:
- self.result.set(m.sin(value))
- elif type == 3:
- self.result.set(m.tan(value))
- elif type == 4:
- if (m.tan(value) != 0.0):
- self.result.set(m.tan(value) ** -1)
- else:
- self.result.set(m.inf)
- def getValue(self) -> float:
- if self.entryValue.get() == '':
- return 0
- elif self.inputType.get() == 2:
- return float(m.radians(float(self.entryValue.get())))
- else:
- return float(self.entryValue.get())
- def draw(self):
- self.window.mainloop()
- def main(sysv):
- mainWindow = windowCalc()
- mainWindow.draw()
- if __name__ == "__main__":
- main(sys.argv)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement