# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'Календарь_new.ui' # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets from numexpr import evaluate as calculation class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(400, 600) MainWindow.setStyleSheet("background-color: rgb(0, 0, 0);") self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName("verticalLayout") self.label_ex = QtWidgets.QLabel(self.centralwidget) self.label_ex.setStyleSheet("background-color: rgb(0, 0, 0);\n" "font: 30pt Rockwell;\n" "color: rgb(255, 255, 255);") self.label_ex.setTextFormat(QtCore.Qt.PlainText) self.label_ex.setScaledContents(False) self.label_ex.setWordWrap(False) self.label_ex.setIndent(15) self.label_ex.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse) self.label_ex.setObjectName("label_ex") self.verticalLayout.addWidget(self.label_ex) self.label_res = QtWidgets.QLabel(self.centralwidget) self.label_res.setToolTip("") self.label_res.setAutoFillBackground(False) self.label_res.setStyleSheet("background-color: rgb(0, 0, 0);\n" "font: 19pt Rockwell;\n" "color: rgb(126, 126, 126);") self.label_res.setScaledContents(False) self.label_res.setIndent(18) self.label_res.setOpenExternalLinks(False) self.label_res.setObjectName("label_res") self.verticalLayout.addWidget(self.label_res) self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setObjectName("gridLayout") self.btn_6 = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_6.sizePolicy().hasHeightForWidth()) self.btn_6.setSizePolicy(sizePolicy) self.btn_6.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;") self.btn_6.setObjectName("btn_6") self.gridLayout.addWidget(self.btn_6, 2, 2, 1, 1) self.btn_percent = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_percent.sizePolicy().hasHeightForWidth()) self.btn_percent.setSizePolicy(sizePolicy) self.btn_percent.setStyleSheet("background-color: rgb(184, 184, 184);\n" "font: 75 26pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "border-radius: 47px;") self.btn_percent.setObjectName("btn_percent") self.gridLayout.addWidget(self.btn_percent, 0, 1, 1, 1) self.btn_8 = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_8.sizePolicy().hasHeightForWidth()) self.btn_8.setSizePolicy(sizePolicy) self.btn_8.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;") self.btn_8.setObjectName("btn_8") self.gridLayout.addWidget(self.btn_8, 1, 1, 1, 1) self.btn_9 = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_9.sizePolicy().hasHeightForWidth()) self.btn_9.setSizePolicy(sizePolicy) self.btn_9.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;") self.btn_9.setObjectName("btn_9") self.gridLayout.addWidget(self.btn_9, 1, 2, 1, 1) self.btn_multiplication = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_multiplication.sizePolicy().hasHeightForWidth()) self.btn_multiplication.setSizePolicy(sizePolicy) self.btn_multiplication.setStyleSheet("background-color: rgb(184, 184, 184);\n" "font: 75 26pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "border-radius: 47px;") self.btn_multiplication.setObjectName("btn_multiplication") self.gridLayout.addWidget(self.btn_multiplication, 1, 3, 1, 1) self.btn_subtraction = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_subtraction.sizePolicy().hasHeightForWidth()) self.btn_subtraction.setSizePolicy(sizePolicy) self.btn_subtraction.setStyleSheet("background-color: rgb(184, 184, 184);\n" "font: 75 26pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "border-radius: 47px;") self.btn_subtraction.setObjectName("btn_subtraction") self.gridLayout.addWidget(self.btn_subtraction, 2, 3, 1, 1) self.btn_5 = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_5.sizePolicy().hasHeightForWidth()) self.btn_5.setSizePolicy(sizePolicy) self.btn_5.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;") self.btn_5.setObjectName("btn_5") self.gridLayout.addWidget(self.btn_5, 2, 1, 1, 1) self.btn_2 = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_2.sizePolicy().hasHeightForWidth()) self.btn_2.setSizePolicy(sizePolicy) self.btn_2.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;") self.btn_2.setObjectName("btn_2") self.gridLayout.addWidget(self.btn_2, 3, 1, 1, 1) self.btn_0 = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_0.sizePolicy().hasHeightForWidth()) self.btn_0.setSizePolicy(sizePolicy) self.btn_0.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;") self.btn_0.setObjectName("btn_0") self.gridLayout.addWidget(self.btn_0, 4, 1, 1, 1) self.btn_1 = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_1.sizePolicy().hasHeightForWidth()) self.btn_1.setSizePolicy(sizePolicy) self.btn_1.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;") self.btn_1.setObjectName("btn_1") self.gridLayout.addWidget(self.btn_1, 3, 0, 1, 1) self.btn_comma = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_comma.sizePolicy().hasHeightForWidth()) self.btn_comma.setSizePolicy(sizePolicy) self.btn_comma.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;") self.btn_comma.setObjectName("btn_comma") self.gridLayout.addWidget(self.btn_comma, 4, 2, 1, 1) self.btn_3 = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_3.sizePolicy().hasHeightForWidth()) self.btn_3.setSizePolicy(sizePolicy) self.btn_3.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;") self.btn_3.setObjectName("btn_3") self.gridLayout.addWidget(self.btn_3, 3, 2, 1, 1) self.btn_addition = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_addition.sizePolicy().hasHeightForWidth()) self.btn_addition.setSizePolicy(sizePolicy) self.btn_addition.setStyleSheet("background-color: rgb(184, 184, 184);\n" "font: 75 26pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "border-radius: 47px;") self.btn_addition.setObjectName("btn_addition") self.gridLayout.addWidget(self.btn_addition, 3, 3, 1, 1) self.btn_00 = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_00.sizePolicy().hasHeightForWidth()) self.btn_00.setSizePolicy(sizePolicy) self.btn_00.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;\n" "") self.btn_00.setObjectName("btn_00") self.gridLayout.addWidget(self.btn_00, 4, 0, 1, 1) self.btn_equally = QtWidgets.QPushButton(self.centralwidget) self.btn_equally.setEnabled(True) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_equally.sizePolicy().hasHeightForWidth()) self.btn_equally.setSizePolicy(sizePolicy) self.btn_equally.setStyleSheet("background-color: rgb(255, 170, 0);\n" "font: 75 26pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "border-radius: 47px;") self.btn_equally.setObjectName("btn_equally") self.gridLayout.addWidget(self.btn_equally, 4, 3, 1, 1) self.btn_4 = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_4.sizePolicy().hasHeightForWidth()) self.btn_4.setSizePolicy(sizePolicy) self.btn_4.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;") self.btn_4.setObjectName("btn_4") self.gridLayout.addWidget(self.btn_4, 2, 0, 1, 1) self.btn_C = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_C.sizePolicy().hasHeightForWidth()) self.btn_C.setSizePolicy(sizePolicy) self.btn_C.setStyleSheet("background-color: rgb(184, 184, 184);\n" "font: 75 26pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "border-radius: 47px;") self.btn_C.setObjectName("btn_C") self.gridLayout.addWidget(self.btn_C, 0, 0, 1, 1) self.btn_removal = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_removal.sizePolicy().hasHeightForWidth()) self.btn_removal.setSizePolicy(sizePolicy) self.btn_removal.setStyleSheet("background-color: rgb(184, 184, 184);\n" "font: 75 26pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "border-radius: 47px;") self.btn_removal.setObjectName("btn_removal") self.gridLayout.addWidget(self.btn_removal, 0, 2, 1, 1) self.btn_division = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_division.sizePolicy().hasHeightForWidth()) self.btn_division.setSizePolicy(sizePolicy) self.btn_division.setStyleSheet("background-color: rgb(184, 184, 184);\n" "font: 75 26pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "border-radius: 47px;") self.btn_division.setObjectName("btn_division") self.gridLayout.addWidget(self.btn_division, 0, 3, 1, 1) self.btn_7 = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_7.sizePolicy().hasHeightForWidth()) self.btn_7.setSizePolicy(sizePolicy) self.btn_7.setStyleSheet("font: 75 20pt MS Shell Dlg 2;\n" "color: rgb(255, 255, 255);\n" "background-color: rgb(103, 103, 103);\n" "border-radius: 47px;") self.btn_7.setObjectName("btn_7") self.gridLayout.addWidget(self.btn_7, 1, 0, 1, 1) self.verticalLayout.addLayout(self.gridLayout) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.add_functions() self.is_equal = False def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.label_ex.setText(_translate("MainWindow", "0")) self.label_res.setText(_translate("MainWindow", "")) self.btn_6.setText(_translate("MainWindow", "6")) self.btn_percent.setText(_translate("MainWindow", "%")) self.btn_8.setText(_translate("MainWindow", "8")) self.btn_9.setText(_translate("MainWindow", "9")) self.btn_multiplication.setText(_translate("MainWindow", "×")) self.btn_subtraction.setText(_translate("MainWindow", "−")) self.btn_5.setText(_translate("MainWindow", "5")) self.btn_2.setText(_translate("MainWindow", "2")) self.btn_0.setText(_translate("MainWindow", "0")) self.btn_1.setText(_translate("MainWindow", "1")) self.btn_comma.setText(_translate("MainWindow", ",")) self.btn_3.setText(_translate("MainWindow", "3")) self.btn_addition.setText(_translate("MainWindow", "+")) self.btn_00.setText(_translate("MainWindow", "00")) self.btn_equally.setText(_translate("MainWindow", "=")) self.btn_4.setText(_translate("MainWindow", "4")) self.btn_C.setText(_translate("MainWindow", "C")) self.btn_removal.setText(_translate("MainWindow", "⌫")) self.btn_division.setText(_translate("MainWindow", "÷")) self.btn_7.setText(_translate("MainWindow", "7")) def add_functions(self): self.btn_00.clicked.connect(lambda: self.write(self.btn_00.text())) self.btn_0.clicked.connect(lambda: self.write(self.btn_0.text())) self.btn_1.clicked.connect(lambda: self.write(self.btn_1.text())) self.btn_2.clicked.connect(lambda: self.write(self.btn_2.text())) self.btn_3.clicked.connect(lambda: self.write(self.btn_3.text())) self.btn_4.clicked.connect(lambda: self.write(self.btn_4.text())) self.btn_5.clicked.connect(lambda: self.write(self.btn_5.text())) self.btn_6.clicked.connect(lambda: self.write(self.btn_6.text())) self.btn_7.clicked.connect(lambda: self.write(self.btn_7.text())) self.btn_8.clicked.connect(lambda: self.write(self.btn_8.text())) self.btn_9.clicked.connect(lambda: self.write(self.btn_9.text())) self.btn_percent.clicked.connect(lambda: self.write(self.btn_percent.text())) self.btn_division.clicked.connect(lambda: self.write('/')) self.btn_multiplication.clicked.connect(lambda: self.write('*')) self.btn_subtraction.clicked.connect(lambda: self.write('-')) self.btn_addition.clicked.connect(lambda: self.write(self.btn_addition.text())) self.btn_comma.clicked.connect(lambda: self.write('.')) self.btn_equally.clicked.connect(self.result) self.btn_removal.clicked.connect(self.clear_one) self.btn_C.clicked.connect(self.clear_all) def percent(self, text): res = calculation(text[:text.index('%')]) t = text for i in range(1, text.count('%') + 1): if i != text.count('%'): if '%' in t[t.index('%') + 1:]: res = calculation( t[t.index('%') + 1: t[t.index('%') + 1:].index('%') + len(t[:t.index('%') + 1])]) * res / 100 else: res = calculation(t[t.index('%') + 1:]) * res / 100 else: res = calculation(t[t.index('%') + 1:]) * res / 100 t = t[:t.find('%')] + ' ' + t[t.find('%') + 1:] return str(res) def write(self, symbol): if self.label_ex.text() == '0' or self.is_equal: self.label_ex.setText(symbol) self.label_res.setText(symbol) self.is_equal = False else: self.label_ex.setText(self.label_ex.text() + symbol) flag = True res = '' if '%' in self.label_ex.text(): try: res = self.percent(self.label_ex.text()) except ZeroDivisionError: res = 'Делить на 0 нельзя!' flag = False except: res = 'Ошибка!' flag = False else: try: res = calculation(self.label_ex.text()) except ZeroDivisionError: res = 'Делить на 0 нельзя!' flag = False except: res = 'Ошибка!' flag = False if flag: self.label_res.setText(str(res)) else: self.label_res.setText('') def result(self): flag = False flag_per = True res = '' if '%' in self.label_ex.text(): try: res = self.percent(self.label_ex.text()) except ZeroDivisionError: res = 'Делить на 0 нельзя!' flag_per = False flag = True except: res = 'Ошибка!' flag_per = False flag = True if flag_per: res = self.percent(self.label_ex.text()) else: try: res = calculation(self.label_ex.text()) except ZeroDivisionError: res = 'Делить на 0 нельзя!' flag = True except: res = 'Ошибка!' flag = True if flag: self.label_res.setText(str(res)) self.is_equal = True else: self.label_ex.setText(str(res)) def clear_one(self): if len(self.label_ex.text()) == 1: self.label_ex.setText('0') self.label_res.setText('') self.is_equal = True else: self.label_ex.setText(self.label_ex.text()[:-1]) res = '' try: if '%' in self.label_ex.text(): res = self.percent(self, self.label_ex.text()) else: res = calculation(self.label_ex.text()) except: res = '' self.label_res.setText(str(res)) def clear_all(self): self.label_ex.setText('0') self.label_res.setText('') self.is_equal = True 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_())