Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PyQt5 import QtWidgets
- import sys
- class Button(QtWidgets.QPushButton):
- def __init__(self, text, parent, x, y, w, h, bgcolor, func):
- super().__init__(text, parent)
- self.move(x, y)
- self.resize(w, h)
- self.setStyleSheet("background-color: #%s; color: #FDFEFE; font-size: 20pt;" % bgcolor)
- self.clicked.connect(func)
- class Widget(QtWidgets.QWidget):
- def __init__(self):
- super().__init__()
- self.setMaximumHeight(500)
- self.setMinimumHeight(500)
- self.setMaximumWidth(349)
- self.setMinimumWidth(349)
- self.setWindowTitle('الحاسبة')
- self.lineEdit = QtWidgets.QLineEdit('0', self)
- self.lineEdit.setReadOnly(True)
- self.lineEdit.move(4, 200)
- self.lineEdit.resize(257, 59)
- self.addButtons()
- self.actions = []
- def addButtons(self):
- self.b0 = Button('0', self, 90, 440, 85, 59, "2C3E50", self.zeroClicked)
- self.b1 = Button('1', self, 4, 380, 85, 59, "148F77", self.oneClicked)
- self.b2 = Button('2', self, 90, 380, 85, 59, "239B56", self.twoClicked)
- self.b3 = Button('3', self, 176, 380, 85, 59, "1F618D", self.threeClicked)
- self.b4 = Button('4', self, 4, 320, 85, 59, "17A589", self.fourClicked)
- self.b5 = Button('5', self, 90, 320, 85, 59, "28B463", self.fiveClicked)
- self.b6 = Button('6', self, 176, 320, 85, 59, "2471A3", self.sixClicked)
- self.b7 = Button('7', self, 4, 260, 85, 59, "1ABC9C", self.sevenClicked)
- self.b8 = Button('8', self, 90, 260, 85, 59, "28B463", self.eightClicked)
- self.b9 = Button('9', self, 176, 260, 85, 59, "2980B9", self.nineClicked)
- self.dot = Button(".", self, 4, 440, 85, 59, "2C3E50", self.dotClicked)
- self.re = Button('±', self, 176, 440, 85, 59, "2C3E50", self.MIClicked)
- self.plus = Button('+', self, 262, 380, 85, 59, "EC7063", self.plusClicked)
- self.minuse = Button('-', self, 262, 320, 85, 59, "EC7063", self.minusClicked)
- self.multi = Button('×', self, 262, 260, 85, 59, "EC7063", self.multiplyClicked)
- self.division = Button('÷', self, 262, 200, 85, 59, "EC7063", self.divideClicked)
- self.equl = Button('=' , self, 262, 440, 85, 59, "EC7063", self.calcAns)
- self.bC = Button('C', self, 262, 140, 85, 59, "EC7063", self.Clear)
- def zeroClicked(self):
- if self.lineEdit.text() == "0":
- return
- self.lineEdit.setText(self.lineEdit.text() + "0")
- def oneClicked(self):
- if self.lineEdit.text() == "0":
- self.lineEdit.setText("1")
- else:
- self.lineEdit.setText(self.lineEdit.text() + "1")
- def twoClicked(self):
- if self.lineEdit.text() == "0":
- self.lineEdit.setText("2")
- else:
- self.lineEdit.setText(self.lineEdit.text() + "2")
- def threeClicked(self):
- if self.lineEdit.text() == "0":
- self.lineEdit.setText("3")
- else:
- self.lineEdit.setText(self.lineEdit.text() + "3")
- def fourClicked(self):
- if self.lineEdit.text() == "0":
- self.lineEdit.setText("4")
- else:
- self.lineEdit.setText(self.lineEdit.text() + "4")
- def fiveClicked(self):
- if self.lineEdit.text() == "0":
- self.lineEdit.setText("5")
- else:
- self.lineEdit.setText(self.lineEdit.text() + "5")
- def sixClicked(self):
- if self.lineEdit.text() == "0":
- self.lineEdit.setText("6")
- else:
- self.lineEdit.setText(self.lineEdit.text() + "6")
- def sevenClicked(self):
- if self.lineEdit.text() == "0":
- self.lineEdit.setText("7")
- else:
- self.lineEdit.setText(self.lineEdit.text() + "7")
- def eightClicked(self):
- if self.lineEdit.text() == "0":
- self.lineEdit.setText("8")
- else:
- self.lineEdit.setText(self.lineEdit.text() + "8")
- def nineClicked(self):
- if self.lineEdit.text() == "0":
- self.lineEdit.setText("9")
- else:
- self.lineEdit.setText(self.lineEdit.text() + "9")
- def dotClicked(self):
- if "." in self.lineEdit.text():
- return
- self.lineEdit.setText(self.lineEdit.text() + ".")
- def MIClicked(self):
- text = self.lineEdit.text()
- if not text or text == "0":
- return
- if text[0] == "-":
- self.lineEdit.setText(text[1:])
- else:
- self.lineEdit.setText("-" + text)
- def plusClicked(self):
- text = self.lineEdit.text()
- if text[-1] == ".":
- text = text[:-1]
- if not text:
- self.actions[-1] = "+"
- return
- elif text == "0":
- return
- if "." in text:
- self.actions.append(float(text))
- else:
- self.actions.append(int(text))
- self.actions.append("+")
- self.lineEdit.clear()
- def minusClicked(self):
- text = self.lineEdit.text()
- if text[-1] == ".":
- text = text[:-1]
- if not text:
- self.actions[-1] = "-"
- return
- elif text == "0":
- return
- if "." in text:
- self.actions.append(float(text))
- else:
- self.actions.append(int(text))
- self.actions.append("-")
- self.lineEdit.clear()
- def multiplyClicked(self):
- text = self.lineEdit.text()
- if text[-1] == ".":
- text = text[:-1]
- if not text:
- self.actions[-1] = "×"
- return
- if "." in text:
- self.actions.append(float(text))
- else:
- self.actions.append(int(text))
- self.actions.append("×")
- self.lineEdit.clear()
- def divideClicked(self):
- text = self.lineEdit.text()
- if text[-1] == ".":
- text = text[:-1]
- if not text:
- self.actions[-1] = "÷"
- return
- if "." in text:
- self.actions.append(float(text))
- else:
- self.actions.append(int(text))
- self.actions.append("÷")
- self.lineEdit.clear()
- def calcAns(self):
- if not self.actions:
- return
- text = self.lineEdit.text()
- if text:
- if "." in text:
- self.actions.append(float(text))
- else:
- self.actions.append(int(text))
- i = 1
- ans = self.actions[0]
- while i < len(self.actions):
- action = self.actions[i]
- if len(self.actions) < i + 2:
- break
- if action == "+":
- ans += self.actions[i + 1]
- elif action == "-":
- ans -= self.actions[i + 1]
- elif action == "×":
- ans *= self.actions[i + 1]
- else:
- ans /= self.actions[i + 1]
- i += 2
- self.actions = []
- self.lineEdit.setText(str(ans))
- def Clear(self):
- self.actions = []
- self.lineEdit.setText("0")
- def main():
- app = QtWidgets.QApplication(sys.argv)
- window = Widget()
- window.show()
- sys.exit(app.exec_())
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement