From 2057dffbe8fddd738e19b23a40d2b708c20e2f11 Mon Sep 17 00:00:00 2001 From: Dmitry <45429986+Endlesssuply@users.noreply.github.com> Date: Wed, 26 Dec 2018 16:59:09 +0300 Subject: [PATCH] Add files via upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Финальная версия калькулятора --- calculator/MainWindow.py | 409 ++++++++++++++++++++ calculator/calculator.py | 165 +++++++++ calculator/mainwindow.ui | 783 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 1357 insertions(+) create mode 100644 calculator/MainWindow.py create mode 100644 calculator/calculator.py create mode 100644 calculator/mainwindow.ui diff --git a/calculator/MainWindow.py b/calculator/MainWindow.py new file mode 100644 index 0000000..ab60a93 --- /dev/null +++ b/calculator/MainWindow.py @@ -0,0 +1,409 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'mainwindow.ui' +# +# Created by: PyQt5 UI code generator 5.11.3 +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore, QtGui, QtWidgets + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(500, 433) + self.centralWidget = QtWidgets.QWidget(MainWindow) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.centralWidget.sizePolicy().hasHeightForWidth()) + self.centralWidget.setSizePolicy(sizePolicy) + self.centralWidget.setObjectName("centralWidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.centralWidget) + self.verticalLayout.setContentsMargins(11, 11, 11, 11) + self.verticalLayout.setSpacing(6) + self.verticalLayout.setObjectName("verticalLayout") + self.lcdNumber = QtWidgets.QLCDNumber(self.centralWidget) + self.lcdNumber.setDigitCount(10) + self.lcdNumber.setObjectName("lcdNumber") + self.verticalLayout.addWidget(self.lcdNumber) + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setSpacing(6) + self.gridLayout.setObjectName("gridLayout") + self.pushButton_mr = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_mr.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(False) + font.setWeight(50) + self.pushButton_mr.setFont(font) + self.pushButton_mr.setStyleSheet("QPushButton {\n" +" color: #FFC107;\n" +"}") + self.pushButton_mr.setObjectName("pushButton_mr") + self.gridLayout.addWidget(self.pushButton_mr, 1, 6, 1, 1) + self.pushButton_ac = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_ac.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(False) + font.setWeight(50) + self.pushButton_ac.setFont(font) + self.pushButton_ac.setStyleSheet("QPushButton {\n" +" color: #f44336;\n" +"}") + self.pushButton_ac.setObjectName("pushButton_ac") + self.gridLayout.addWidget(self.pushButton_ac, 1, 3, 1, 1) + self.pushButton_eq = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_eq.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(25) + font.setBold(True) + font.setWeight(75) + self.pushButton_eq.setFont(font) + self.pushButton_eq.setStyleSheet("QPushButton {\n" +"color: #4CAF50;\n" +"}") + self.pushButton_eq.setObjectName("pushButton_eq") + self.gridLayout.addWidget(self.pushButton_eq, 6, 6, 1, 2) + self.pushButton_n7 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_n7.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(True) + font.setWeight(75) + self.pushButton_n7.setFont(font) + self.pushButton_n7.setStyleSheet("QPushButton {\n" +"color: #1976D2;\n" +"}") + self.pushButton_n7.setObjectName("pushButton_n7") + self.gridLayout.addWidget(self.pushButton_n7, 2, 3, 1, 1) + self.pushButton_mul = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_mul.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(False) + font.setWeight(50) + self.pushButton_mul.setFont(font) + self.pushButton_mul.setObjectName("pushButton_mul") + self.gridLayout.addWidget(self.pushButton_mul, 2, 7, 1, 1) + self.pushButton_n5 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_n5.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(True) + font.setWeight(75) + self.pushButton_n5.setFont(font) + self.pushButton_n5.setStyleSheet("QPushButton {\n" +"color: #1976D2;\n" +"}") + self.pushButton_n5.setObjectName("pushButton_n5") + self.gridLayout.addWidget(self.pushButton_n5, 3, 4, 1, 1) + self.pushButton_n3 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_n3.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(True) + font.setWeight(75) + self.pushButton_n3.setFont(font) + self.pushButton_n3.setStyleSheet("QPushButton {\n" +"color: #1976D2;\n" +"}") + self.pushButton_n3.setObjectName("pushButton_n3") + self.gridLayout.addWidget(self.pushButton_n3, 4, 6, 1, 1) + self.pushButton_n9 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_n9.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(True) + font.setWeight(75) + self.pushButton_n9.setFont(font) + self.pushButton_n9.setStyleSheet("QPushButton {\n" +"color: #1976D2;\n" +"}") + self.pushButton_n9.setObjectName("pushButton_n9") + self.gridLayout.addWidget(self.pushButton_n9, 2, 6, 1, 1) + self.pushButton_sub = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_sub.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(False) + font.setWeight(50) + self.pushButton_sub.setFont(font) + self.pushButton_sub.setObjectName("pushButton_sub") + self.gridLayout.addWidget(self.pushButton_sub, 3, 7, 1, 1) + self.pushButton_m = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_m.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(False) + font.setWeight(50) + self.pushButton_m.setFont(font) + self.pushButton_m.setStyleSheet("QPushButton {\n" +" color: #FFC107;\n" +"}") + self.pushButton_m.setObjectName("pushButton_m") + self.gridLayout.addWidget(self.pushButton_m, 1, 4, 1, 1) + self.pushButton_n1 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_n1.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(True) + font.setWeight(75) + self.pushButton_n1.setFont(font) + self.pushButton_n1.setStyleSheet("QPushButton {\n" +"color: #1976D2;\n" +"}") + self.pushButton_n1.setObjectName("pushButton_n1") + self.gridLayout.addWidget(self.pushButton_n1, 4, 3, 1, 1) + self.pushButton_n0 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_n0.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(25) + font.setBold(True) + font.setWeight(75) + self.pushButton_n0.setFont(font) + self.pushButton_n0.setStyleSheet("QPushButton {\n" +"color: #1976D2;\n" +"}") + self.pushButton_n0.setObjectName("pushButton_n0") + self.gridLayout.addWidget(self.pushButton_n0, 6, 4, 1, 1) + self.pushButton_n4 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_n4.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(True) + font.setWeight(75) + self.pushButton_n4.setFont(font) + self.pushButton_n4.setStyleSheet("QPushButton {\n" +"color: #1976D2;\n" +"}") + self.pushButton_n4.setObjectName("pushButton_n4") + self.gridLayout.addWidget(self.pushButton_n4, 3, 3, 1, 1) + self.pushButton_n2 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_n2.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(True) + font.setWeight(75) + self.pushButton_n2.setFont(font) + self.pushButton_n2.setStyleSheet("QPushButton {\n" +"color: #1976D2;\n" +"}") + self.pushButton_n2.setObjectName("pushButton_n2") + self.gridLayout.addWidget(self.pushButton_n2, 4, 4, 1, 1) + self.pushButton_div = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_div.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(False) + font.setWeight(50) + self.pushButton_div.setFont(font) + self.pushButton_div.setObjectName("pushButton_div") + self.gridLayout.addWidget(self.pushButton_div, 1, 7, 1, 1) + self.pushButton_n6 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_n6.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(True) + font.setWeight(75) + self.pushButton_n6.setFont(font) + self.pushButton_n6.setStyleSheet("QPushButton {\n" +"color: #1976D2;\n" +"}") + self.pushButton_n6.setObjectName("pushButton_n6") + self.gridLayout.addWidget(self.pushButton_n6, 3, 6, 1, 1) + self.pushButton_add = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_add.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(False) + font.setWeight(50) + self.pushButton_add.setFont(font) + self.pushButton_add.setObjectName("pushButton_add") + self.gridLayout.addWidget(self.pushButton_add, 4, 7, 1, 1) + self.pushButton_n8 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_n8.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(27) + font.setBold(True) + font.setWeight(75) + self.pushButton_n8.setFont(font) + self.pushButton_n8.setStyleSheet("QPushButton {\n" +"color: #1976D2;\n" +"}") + self.pushButton_n8.setObjectName("pushButton_n8") + self.gridLayout.addWidget(self.pushButton_n8, 2, 4, 1, 1) + self.pushButton_inv = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_inv.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(25) + self.pushButton_inv.setFont(font) + self.pushButton_inv.setObjectName("pushButton_inv") + self.gridLayout.addWidget(self.pushButton_inv, 6, 3, 1, 1) + self.pushButton_pc = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_pc.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(25) + font.setBold(False) + font.setWeight(50) + self.pushButton_pc.setFont(font) + self.pushButton_pc.setObjectName("pushButton_pc") + self.gridLayout.addWidget(self.pushButton_pc, 6, 2, 1, 1) + self.pushButton_pi = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_pi.setMinimumSize(QtCore.QSize(0, 50)) + self.pushButton_pi.setSizeIncrement(QtCore.QSize(0, 0)) + font = QtGui.QFont() + font.setPointSize(25) + self.pushButton_pi.setFont(font) + self.pushButton_pi.setObjectName("pushButton_pi") + self.gridLayout.addWidget(self.pushButton_pi, 1, 2, 1, 1) + self.pushButton_ste = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_ste.setMinimumSize(QtCore.QSize(0, 50)) + self.pushButton_ste.setSizeIncrement(QtCore.QSize(0, 0)) + font = QtGui.QFont() + font.setPointSize(25) + self.pushButton_ste.setFont(font) + self.pushButton_ste.setObjectName("pushButton_ste") + self.gridLayout.addWidget(self.pushButton_ste, 1, 1, 1, 1) + self.pushButton_root1 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_root1.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(25) + font.setBold(False) + font.setWeight(50) + self.pushButton_root1.setFont(font) + self.pushButton_root1.setObjectName("pushButton_root1") + self.gridLayout.addWidget(self.pushButton_root1, 2, 2, 1, 1) + self.pushButton_pow1 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_pow1.setMinimumSize(QtCore.QSize(0, 50)) + self.pushButton_pow1.setSizeIncrement(QtCore.QSize(0, 0)) + font = QtGui.QFont() + font.setPointSize(25) + self.pushButton_pow1.setFont(font) + self.pushButton_pow1.setObjectName("pushButton_pow1") + self.gridLayout.addWidget(self.pushButton_pow1, 2, 1, 1, 1) + self.pushButton_pow2 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_pow2.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(25) + self.pushButton_pow2.setFont(font) + self.pushButton_pow2.setObjectName("pushButton_pow2") + self.gridLayout.addWidget(self.pushButton_pow2, 3, 1, 1, 1) + self.pushButton_root2 = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_root2.setSizeIncrement(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(25) + self.pushButton_root2.setFont(font) + self.pushButton_root2.setObjectName("pushButton_root2") + self.gridLayout.addWidget(self.pushButton_root2, 3, 2, 1, 1) + self.pushButton_fact = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_fact.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(25) + self.pushButton_fact.setFont(font) + self.pushButton_fact.setObjectName("pushButton_fact") + self.gridLayout.addWidget(self.pushButton_fact, 6, 1, 1, 1) + self.pushButton_exp = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_exp.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(25) + self.pushButton_exp.setFont(font) + self.pushButton_exp.setObjectName("pushButton_exp") + self.gridLayout.addWidget(self.pushButton_exp, 4, 1, 1, 1) + self.pushButton_log = QtWidgets.QPushButton(self.centralWidget) + self.pushButton_log.setMinimumSize(QtCore.QSize(0, 50)) + font = QtGui.QFont() + font.setPointSize(20) + self.pushButton_log.setFont(font) + self.pushButton_log.setObjectName("pushButton_log") + self.gridLayout.addWidget(self.pushButton_log, 4, 2, 1, 1) + self.verticalLayout.addLayout(self.gridLayout) + MainWindow.setCentralWidget(self.centralWidget) + self.menuBar = QtWidgets.QMenuBar(MainWindow) + self.menuBar.setGeometry(QtCore.QRect(0, 0, 500, 21)) + self.menuBar.setObjectName("menuBar") + self.menuFIle = QtWidgets.QMenu(self.menuBar) + self.menuFIle.setObjectName("menuFIle") + MainWindow.setMenuBar(self.menuBar) + self.statusBar = QtWidgets.QStatusBar(MainWindow) + self.statusBar.setObjectName("statusBar") + MainWindow.setStatusBar(self.statusBar) + self.actionExit = QtWidgets.QAction(MainWindow) + self.actionExit.setObjectName("actionExit") + self.actionReset = QtWidgets.QAction(MainWindow) + self.actionReset.setObjectName("actionReset") + self.menuFIle.addAction(self.actionReset) + self.menuFIle.addAction(self.actionExit) + self.menuBar.addAction(self.menuFIle.menuAction()) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "Калькулятор")) + self.pushButton_mr.setText(_translate("MainWindow", "MR")) + self.pushButton_mr.setShortcut(_translate("MainWindow", "R")) + self.pushButton_ac.setText(_translate("MainWindow", "AC")) + self.pushButton_ac.setShortcut(_translate("MainWindow", "Esc")) + self.pushButton_eq.setText(_translate("MainWindow", "=")) + self.pushButton_eq.setShortcut(_translate("MainWindow", "Return")) + self.pushButton_n7.setText(_translate("MainWindow", "7")) + self.pushButton_n7.setShortcut(_translate("MainWindow", "7")) + self.pushButton_mul.setText(_translate("MainWindow", "x")) + self.pushButton_mul.setShortcut(_translate("MainWindow", "*")) + self.pushButton_n5.setText(_translate("MainWindow", "5")) + self.pushButton_n5.setShortcut(_translate("MainWindow", "5")) + self.pushButton_n3.setText(_translate("MainWindow", "3")) + self.pushButton_n3.setShortcut(_translate("MainWindow", "3")) + self.pushButton_n9.setText(_translate("MainWindow", "9")) + self.pushButton_n9.setShortcut(_translate("MainWindow", "9")) + self.pushButton_sub.setText(_translate("MainWindow", "-")) + self.pushButton_sub.setShortcut(_translate("MainWindow", "-")) + self.pushButton_m.setText(_translate("MainWindow", "M")) + self.pushButton_m.setShortcut(_translate("MainWindow", "M")) + self.pushButton_n1.setText(_translate("MainWindow", "1")) + self.pushButton_n1.setShortcut(_translate("MainWindow", "1")) + self.pushButton_n0.setText(_translate("MainWindow", "0")) + self.pushButton_n0.setShortcut(_translate("MainWindow", "0")) + self.pushButton_n4.setText(_translate("MainWindow", "4")) + self.pushButton_n4.setShortcut(_translate("MainWindow", "4")) + self.pushButton_n2.setText(_translate("MainWindow", "2")) + self.pushButton_n2.setShortcut(_translate("MainWindow", "2")) + self.pushButton_div.setText(_translate("MainWindow", "÷")) + self.pushButton_div.setShortcut(_translate("MainWindow", "/")) + self.pushButton_n6.setText(_translate("MainWindow", "6")) + self.pushButton_n6.setShortcut(_translate("MainWindow", "6")) + self.pushButton_add.setText(_translate("MainWindow", "+")) + self.pushButton_add.setShortcut(_translate("MainWindow", "+")) + self.pushButton_n8.setText(_translate("MainWindow", "8")) + self.pushButton_n8.setShortcut(_translate("MainWindow", "8")) + self.pushButton_inv.setText(_translate("MainWindow", "+/-")) + self.pushButton_pc.setText(_translate("MainWindow", "%")) + self.pushButton_pc.setShortcut(_translate("MainWindow", "%")) + self.pushButton_pi.setText(_translate("MainWindow", "Pi")) + self.pushButton_ste.setText(_translate("MainWindow", "x^y")) + self.pushButton_root1.setText(_translate("MainWindow", "√x")) + self.pushButton_pow1.setText(_translate("MainWindow", "x^2")) + self.pushButton_pow2.setText(_translate("MainWindow", "X^3")) + self.pushButton_root2.setText(_translate("MainWindow", "∛x")) + self.pushButton_fact.setText(_translate("MainWindow", "x!")) + self.pushButton_exp.setText(_translate("MainWindow", "e^x")) + self.pushButton_log.setText(_translate("MainWindow", "log x")) + self.menuFIle.setTitle(_translate("MainWindow", "Файл")) + self.actionExit.setText(_translate("MainWindow", "Выйти")) + self.actionExit.setShortcut(_translate("MainWindow", "Ctrl+Q")) + self.actionReset.setText(_translate("MainWindow", "Перезапуск")) + self.actionReset.setShortcut(_translate("MainWindow", "Ctrl+R")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + MainWindow = QtWidgets.QMainWindow() + ui = Ui_MainWindow() + ui.setupUi(MainWindow) + MainWindow.show() + sys.exit(app.exec_()) + diff --git a/calculator/calculator.py b/calculator/calculator.py new file mode 100644 index 0000000..88ad681 --- /dev/null +++ b/calculator/calculator.py @@ -0,0 +1,165 @@ +from PyQt5.QtGui import * +from PyQt5.QtWidgets import * +from PyQt5.QtCore import * +import math + +import operator + +from MainWindow import Ui_MainWindow + +# Константы +READY = 0 +INPUT = 1 + + +class MainWindow(QMainWindow, Ui_MainWindow): + def __init__(self, *args, **kwargs): + super(MainWindow, self).__init__(*args, **kwargs) + self.setupUi(self) + + # Задаем числа + for n in range(0, 10): + getattr(self, 'pushButton_n%s' % n).pressed.connect(lambda v=n: self.input_number(v)) + + # Задаем операции + self.pushButton_add.pressed.connect(lambda: self.operation(operator.add)) + self.pushButton_sub.pressed.connect(lambda: self.operation(operator.sub)) + self.pushButton_mul.pressed.connect(lambda: self.operation(operator.mul)) + self.pushButton_div.pressed.connect(lambda: self.operation(operator.truediv)) + self.pushButton_ste.pressed.connect(lambda: self.operation(operator.pow)) + + self.pushButton_root1.pressed.connect(self.operation_root1) + self.pushButton_root2.pressed.connect(self.operation_root2) + self.pushButton_pow1.pressed.connect(self.operation_pow1) + self.pushButton_pow2.pressed.connect(self.operation_pow2) + self.pushButton_inv.pressed.connect(self.operation_inv) + self.pushButton_pi.pressed.connect(self.operation_pi) + self.pushButton_pc.pressed.connect(self.operation_pc) + self.pushButton_fact.pressed.connect(self.operation_fact) + self.pushButton_exp.pressed.connect(self.operation_exp) + self.pushButton_log.pressed.connect(self.operation_log) + self.pushButton_eq.pressed.connect(self.equals) + + # Задаем действия + self.actionReset.triggered.connect(self.reset) + self.pushButton_ac.pressed.connect(self.reset) + + self.pushButton_m.pressed.connect(self.memory_store) + self.pushButton_mr.pressed.connect(self.memory_recall) + + self.memory = 0 + self.reset() + + self.show() + + def display(self): + self.lcdNumber.display(self.stack[-1]) + + def reset(self): + self.state = READY + self.stack = [0] + self.last_operation = None + self.current_op = None + self.display() + + def memory_store(self): + self.memory = self.lcdNumber.value() + + def memory_recall(self): + self.state = INPUT + self.stack[-1] = self.memory + self.display() + + def input_number(self, v): + if self.state == READY: + self.state = INPUT + self.stack[-1] = v + else: + self.stack[-1] = self.stack[-1] * 10 + v + + self.display() + + def operation(self, op): + if self.current_op: # Завершить текущую операцию + self.equals() + + self.stack.append(0) + self.state = INPUT + self.current_op = op + + def operation_pc(self): + self.state = INPUT + self.stack[-1] *= 0.01 + self.display() + + def operation_inv(self): + self.state = INPUT + self.stack[-1] *= -1 + self.display() + + def operation_root1(self): + self.state = INPUT + self.stack[-1] **= 0.5 + self.display() + + def operation_root2(self): + self.state = INPUT + self.stack[-1] **= (1/3) + self.display() + + def operation_pow1(self): + self.state = INPUT + self.stack[-1] **= 2 + self.display() + + def operation_pow2(self): + self.state = INPUT + self.stack[-1] **= 3 + self.display() + + def operation_pi(self): + self.state = INPUT + self.stack[-1] = 3.14159265359 + self.display() + + def operation_exp(self): + self.state = INPUT + i = 1 + e = 2.71828182846 + print(self.stack[-1]) + while i != self.stack[-1]: + i += 1 + e *= 2.71828182846 + self.stack[-1] = e + self.display() + + def operation_fact(self): + self.state = INPUT + self.stack[-1] = math.factorial(self.stack[-1]) + self.display() + + def operation_log(self): + self.state = INPUT + self.stack[-1] = math.log(self.stack[-1]) + self.display() + + def equals(self): + if self.state == READY and self.last_operation: + s, self.current_op = self.last_operation + self.stack.append(s) + + if self.current_op: + self.last_operation = self.stack[-1], self.current_op + + self.stack = [self.current_op(*self.stack)] + self.current_op = None + self.state = READY + self.display() + + +if __name__ == '__main__': + app = QApplication([]) + app.setApplicationName("Calculator") + + window = MainWindow() + app.exec_() diff --git a/calculator/mainwindow.ui b/calculator/mainwindow.ui new file mode 100644 index 0000000..d2adeaf --- /dev/null +++ b/calculator/mainwindow.ui @@ -0,0 +1,783 @@ + + + MainWindow + + + + 0 + 0 + 500 + 433 + + + + Калькулятор + + + + + 0 + 0 + + + + + + + 10 + + + + + + + + + + 0 + 50 + + + + + 27 + 50 + false + + + + QPushButton { + color: #FFC107; +} + + + MR + + + R + + + + + + + + 0 + 50 + + + + + 27 + 50 + false + + + + QPushButton { + color: #f44336; +} + + + AC + + + Esc + + + + + + + + 0 + 50 + + + + + 25 + 75 + true + + + + QPushButton { +color: #4CAF50; +} + + + = + + + Return + + + + + + + + 0 + 50 + + + + + 27 + 75 + true + + + + QPushButton { +color: #1976D2; +} + + + 7 + + + 7 + + + + + + + + 0 + 50 + + + + + 27 + 50 + false + + + + x + + + * + + + + + + + + 0 + 50 + + + + + 27 + 75 + true + + + + QPushButton { +color: #1976D2; +} + + + 5 + + + 5 + + + + + + + + 0 + 50 + + + + + 27 + 75 + true + + + + QPushButton { +color: #1976D2; +} + + + 3 + + + 3 + + + + + + + + 0 + 50 + + + + + 27 + 75 + true + + + + QPushButton { +color: #1976D2; +} + + + 9 + + + 9 + + + + + + + + 0 + 50 + + + + + 27 + 50 + false + + + + - + + + - + + + + + + + + 0 + 50 + + + + + 27 + 50 + false + + + + QPushButton { + color: #FFC107; +} + + + M + + + M + + + + + + + + 0 + 50 + + + + + 27 + 75 + true + + + + QPushButton { +color: #1976D2; +} + + + 1 + + + 1 + + + + + + + + 0 + 50 + + + + + 25 + 75 + true + + + + QPushButton { +color: #1976D2; +} + + + 0 + + + 0 + + + + + + + + 0 + 50 + + + + + 27 + 75 + true + + + + QPushButton { +color: #1976D2; +} + + + 4 + + + 4 + + + + + + + + 0 + 50 + + + + + 27 + 75 + true + + + + QPushButton { +color: #1976D2; +} + + + 2 + + + 2 + + + + + + + + 0 + 50 + + + + + 27 + 50 + false + + + + ÷ + + + / + + + + + + + + 0 + 50 + + + + + 27 + 75 + true + + + + QPushButton { +color: #1976D2; +} + + + 6 + + + 6 + + + + + + + + 0 + 50 + + + + + 27 + 50 + false + + + + + + + + + + + + + + + + + 0 + 50 + + + + + 27 + 75 + true + + + + QPushButton { +color: #1976D2; +} + + + 8 + + + 8 + + + + + + + + 0 + 50 + + + + + 25 + + + + +/- + + + + + + + + 0 + 50 + + + + + 25 + 50 + false + + + + % + + + % + + + + + + + + 0 + 50 + + + + + 0 + 0 + + + + + 25 + + + + Pi + + + + + + + + 0 + 50 + + + + + 0 + 0 + + + + + 25 + + + + x^y + + + + + + + + 0 + 50 + + + + + 25 + 50 + false + + + + √x + + + + + + + + 0 + 50 + + + + + 0 + 0 + + + + + 25 + + + + x^2 + + + + + + + + 0 + 50 + + + + + 25 + + + + X^3 + + + + + + + + 0 + 50 + + + + + 25 + + + + ∛x + + + + + + + + 0 + 50 + + + + + 25 + + + + x! + + + + + + + + 0 + 50 + + + + + 25 + + + + e^x + + + + + + + + 0 + 50 + + + + + 20 + + + + log x + + + + + + + + + + + 0 + 0 + 500 + 21 + + + + + Файл + + + + + + + + + + Выйти + + + Ctrl+Q + + + + + Перезапуск + + + Ctrl+R + + + + + + +