-
Notifications
You must be signed in to change notification settings - Fork 0
/
Main.py
133 lines (119 loc) · 6.22 KB
/
Main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
from PySide6.QtCore import *
from PySide6.QtWidgets import *
from PySide6.QtGui import *
from PySide6.QtUiTools import QUiLoader
from functools import partial
from math import *
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.loader = QUiLoader()
self.ui = self.loader.load("Calculator.ui")
self.ui.show()
self.temp_num = 0
self.result = 0
self.current_op = '' #آخرین عملگر ریاضی را در خود ذخیره می کند تا در زمان استفاده از مساوی بداند باید چه عملی انجام دهد
##################### Operations ########################
self.ui.btn_sum.clicked.connect(partial(self.The_four_basic_mathematical_operations,'+'))
self.ui.btn_mines.clicked.connect(partial(self.The_four_basic_mathematical_operations,'-'))
self.ui.btn_div.clicked.connect(partial(self.The_four_basic_mathematical_operations,'/'))
self.ui.btn_multi.clicked.connect(partial(self.The_four_basic_mathematical_operations,'*'))
self.ui.btn_q.clicked.connect(partial(self.Symmetry,'q'))
self.ui.btn_sin.clicked.connect(partial(self.Trigonometric_calculations,'sin'))
self.ui.btn_cos.clicked.connect(partial(self.Trigonometric_calculations,'cos'))
self.ui.btn_tan.clicked.connect(partial(self.Trigonometric_calculations,'tan'))
self.ui.btn_cot.clicked.connect(partial(self.Trigonometric_calculations,'cot'))
self.ui.btn_eqaul.clicked.connect(self.Eqaul)
self.ui.btn_log.clicked.connect(self.Logarithm)
self.ui.btn_sqrt.clicked.connect(self.Sqrt)
self.ui.btn_percent.clicked.connect(self.Percent)
self.ui.btn_clear.clicked.connect(self.Clear_text_box)
##################### Number btn #########################
self.ui.btn_0.clicked.connect(partial(self.Write_number_in_text_box,0))
self.ui.btn_1.clicked.connect(partial(self.Write_number_in_text_box,1))
self.ui.btn_2.clicked.connect(partial(self.Write_number_in_text_box,2))
self.ui.btn_3.clicked.connect(partial(self.Write_number_in_text_box,3))
self.ui.btn_4.clicked.connect(partial(self.Write_number_in_text_box,4))
self.ui.btn_5.clicked.connect(partial(self.Write_number_in_text_box,5))
self.ui.btn_6.clicked.connect(partial(self.Write_number_in_text_box,6))
self.ui.btn_7.clicked.connect(partial(self.Write_number_in_text_box,7))
self.ui.btn_8.clicked.connect(partial(self.Write_number_in_text_box,8))
self.ui.btn_9.clicked.connect(partial(self.Write_number_in_text_box,9))
self.ui.btn_decimal.clicked.connect(partial(self.Write_number_in_text_box,'.'))
#####################################################################
def Write_number_in_text_box(self,number):
if self.ui.lineEdit.text() != str(0):
self.ui.lineEdit.setText(self.ui.lineEdit.text() + str(number))
else:
self.ui.lineEdit.setText(str(number))
def The_four_basic_mathematical_operations(self,operation):
try:
if operation == '+':
self.current_op = '+'
self.result = float(self.ui.lineEdit.text())
elif operation == '-':
self.current_op = '-'
self.result = float(self.ui.lineEdit.text())
elif operation == '*':
self.result = float(self.ui.lineEdit.text())
self.current_op = '*'
elif operation == '/':
self.result = float(self.ui.lineEdit.text())
self.current_op = '/'
self.ui.lineEdit.setText("")
except:
self.ui.lineEdit.setText("!! خطا !!")
self.result = 0
def Trigonometric_calculations(self,operation):
try:
if operation == 'sin':
self.result = float(self.ui.lineEdit.text())
self.ui.lineEdit.setText(str(sin(radians(self.result))))
self.box_is_empty = False
elif operation == 'cos':
self.result = float(self.ui.lineEdit.text())
self.ui.lineEdit.setText(str(cos(radians(self.result))))
elif operation == 'tan':
self.result = float(self.ui.lineEdit.text())
self.ui.lineEdit.setText(str(tan(radians(self.result))))
elif operation == 'cot':
self.result = float(self.ui.lineEdit.text())
self.result = 1 / tan(radians(self.result))
self.ui.lineEdit.setText(str(self.result))
except:
self.ui.lineEdit.setText("!! خطا !!")
self.result = 0
def Logarithm(self):
self.ui.lineEdit.setText(str(log10(float(self.ui.lineEdit.text()))))
def Percent(self):
self.result = float(self.ui.lineEdit.text())
self.result /= 100
self.ui.lineEdit.setText(str(self.result))
def Sqrt(self):
self.ui.lineEdit.setText(str(sqrt(float(self.ui.lineEdit.text()))))
def Clear_text_box(self):
self.result = 0
self.current_op = None
self.temp_num = None
self.ui.lineEdit.setText("")
def Symmetry(self,operation):
self.result = float(self.ui.lineEdit.text())
self.result = self.result * -1
self.ui.lineEdit.setText("")
self.ui.lineEdit.setText(str(self.result))
def Eqaul(self):
self.temp_num = float(self.ui.lineEdit.text())
if self.current_op == '+':
self.ui.lineEdit.setText(str(self.result + self.temp_num))
elif self.current_op == "-":
self.ui.lineEdit.setText(str(self.result - self.temp_num))
elif self.current_op == "*":
self.ui.lineEdit.setText(str(self.result * self.temp_num))
elif self.current_op == "/":
self.ui.lineEdit.setText(str(self.result / self.temp_num))
self.result = 0
self.current_op = ""
self.temp_num = 0
app = QApplication()
main_window = MainWindow()
app.exec()