Калькулятор не считает проценты

Пишу калькулятор на PyQt5, не могу сделать чтобы он считал проценты

Код:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(320, 540)
        MainWindow.setMinimumSize(QtCore.QSize(320, 460))
        MainWindow.setMaximumSize(QtCore.QSize(320, 540))
        MainWindow.setStyleSheet("")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.input_data = QtWidgets.QLineEdit(self.centralwidget)
        self.input_data.setGeometry(QtCore.QRect(0, 0, 320, 140))
        self.input_data.setMinimumSize(QtCore.QSize(320, 140))
        self.input_data.setMaximumSize(QtCore.QSize(320, 140))
        font = QtGui.QFont()
        font.setPointSize(30)
        self.input_data.setFont(font)
        self.input_data.setStyleSheet("background-color: rgb(0, 0, 0);\n"
"border: none;\n"
"color: white;\n"
"")
        self.input_data.setText("")
        self.input_data.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.input_data.setObjectName("input_data")
        self.button7 = QtWidgets.QPushButton(self.centralwidget)
        self.button7.setGeometry(QtCore.QRect(0, 220, 81, 81))
        self.button7.setMinimumSize(QtCore.QSize(81, 81))
        self.button7.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button7.setFont(font)
        self.button7.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button7.setObjectName("button7")
        self.button8 = QtWidgets.QPushButton(self.centralwidget)
        self.button8.setGeometry(QtCore.QRect(80, 220, 81, 81))
        self.button8.setMinimumSize(QtCore.QSize(81, 81))
        self.button8.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button8.setFont(font)
        self.button8.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button8.setObjectName("button8")
        self.button9 = QtWidgets.QPushButton(self.centralwidget)
        self.button9.setGeometry(QtCore.QRect(160, 220, 81, 81))
        self.button9.setMinimumSize(QtCore.QSize(81, 81))
        self.button9.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button9.setFont(font)
        self.button9.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button9.setObjectName("button9")
        self.button4 = QtWidgets.QPushButton(self.centralwidget)
        self.button4.setGeometry(QtCore.QRect(0, 300, 81, 81))
        self.button4.setMinimumSize(QtCore.QSize(81, 81))
        self.button4.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button4.setFont(font)
        self.button4.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button4.setObjectName("button4")
        self.button5 = QtWidgets.QPushButton(self.centralwidget)
        self.button5.setGeometry(QtCore.QRect(80, 300, 81, 81))
        self.button5.setMinimumSize(QtCore.QSize(81, 81))
        self.button5.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button5.setFont(font)
        self.button5.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button5.setObjectName("button5")
        self.button6 = QtWidgets.QPushButton(self.centralwidget)
        self.button6.setGeometry(QtCore.QRect(160, 300, 81, 81))
        self.button6.setMinimumSize(QtCore.QSize(81, 81))
        self.button6.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button6.setFont(font)
        self.button6.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button6.setObjectName("button6")
        self.buttonpoint = QtWidgets.QPushButton(self.centralwidget)
        self.buttonpoint.setGeometry(QtCore.QRect(80, 460, 81, 81))
        self.buttonpoint.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonpoint.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonpoint.setFont(font)
        self.buttonpoint.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.buttonpoint.setObjectName("buttonpoint")
        self.button0 = QtWidgets.QPushButton(self.centralwidget)
        self.button0.setGeometry(QtCore.QRect(0, 460, 81, 81))
        self.button0.setMinimumSize(QtCore.QSize(81, 81))
        self.button0.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button0.setFont(font)
        self.button0.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button0.setObjectName("button0")
        self.buttonc = QtWidgets.QPushButton(self.centralwidget)
        self.buttonc.setGeometry(QtCore.QRect(0, 140, 81, 81))
        self.buttonc.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonc.setMaximumSize(QtCore.QSize(162, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonc.setFont(font)
        self.buttonc.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.buttonc.setObjectName("buttonc")
        self.button1 = QtWidgets.QPushButton(self.centralwidget)
        self.button1.setGeometry(QtCore.QRect(0, 380, 81, 81))
        self.button1.setMinimumSize(QtCore.QSize(81, 81))
        self.button1.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button1.setFont(font)
        self.button1.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button1.setObjectName("button1")
        self.button2 = QtWidgets.QPushButton(self.centralwidget)
        self.button2.setGeometry(QtCore.QRect(80, 380, 81, 81))
        self.button2.setMinimumSize(QtCore.QSize(81, 81))
        self.button2.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button2.setFont(font)
        self.button2.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button2.setObjectName("button2")
        self.button3 = QtWidgets.QPushButton(self.centralwidget)
        self.button3.setGeometry(QtCore.QRect(160, 380, 81, 81))
        self.button3.setMinimumSize(QtCore.QSize(81, 81))
        self.button3.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button3.setFont(font)
        self.button3.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button3.setObjectName("button3")
        self.buttonbackspace = QtWidgets.QPushButton(self.centralwidget)
        self.buttonbackspace.setGeometry(QtCore.QRect(160, 140, 81, 81))
        self.buttonbackspace.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonbackspace.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonbackspace.setFont(font)
        self.buttonbackspace.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.buttonbackspace.setObjectName("buttonbackspace")
        self.buttonadd = QtWidgets.QPushButton(self.centralwidget)
        self.buttonadd.setGeometry(QtCore.QRect(240, 140, 81, 81))
        self.buttonadd.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonadd.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonadd.setFont(font)
        self.buttonadd.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(12, 66, 68);\n"
"    border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
"    background-color: rgb(18, 103, 106);\n"
"}")
        self.buttonadd.setObjectName("buttonadd")
        self.buttonsub = QtWidgets.QPushButton(self.centralwidget)
        self.buttonsub.setGeometry(QtCore.QRect(240, 220, 81, 81))
        self.buttonsub.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonsub.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonsub.setFont(font)
        self.buttonsub.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(12, 66, 68);\n"
"    border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
"    background-color: rgb(18, 103, 106);\n"
"}")
        self.buttonsub.setObjectName("buttonsub")
        self.buttonmult = QtWidgets.QPushButton(self.centralwidget)
        self.buttonmult.setGeometry(QtCore.QRect(240, 300, 81, 81))
        self.buttonmult.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonmult.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonmult.setFont(font)
        self.buttonmult.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(12, 66, 68);\n"
"    border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
"    background-color: rgb(18, 103, 106);\n"
"}")
        self.buttonmult.setObjectName("buttonmult")
        self.buttondiv = QtWidgets.QPushButton(self.centralwidget)
        self.buttondiv.setGeometry(QtCore.QRect(240, 380, 81, 81))
        self.buttondiv.setMinimumSize(QtCore.QSize(81, 81))
        self.buttondiv.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttondiv.setFont(font)
        self.buttondiv.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(12, 66, 68);\n"
"    border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
"    background-color: rgb(18, 103, 106);\n"
"}")
        self.buttondiv.setObjectName("buttondiv")
        self.buttonequally = QtWidgets.QPushButton(self.centralwidget)
        self.buttonequally.setGeometry(QtCore.QRect(160, 460, 162, 81))
        self.buttonequally.setMinimumSize(QtCore.QSize(162, 81))
        self.buttonequally.setMaximumSize(QtCore.QSize(162, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonequally.setFont(font)
        self.buttonequally.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(41, 174, 161);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    background-color: rgb(31, 135, 125);\n"
"}")
        self.buttonequally.setObjectName("buttonequally")
        self.history = QtWidgets.QLabel(self.centralwidget)
        self.history.setGeometry(QtCore.QRect(50, 20, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(13)
        self.history.setFont(font)
        self.history.setStyleSheet("color: rgb(34, 187, 187);")
        self.history.setText("")
        self.history.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.history.setObjectName("history")
        self.buttonprocent = QtWidgets.QPushButton(self.centralwidget)
        self.buttonprocent.setGeometry(QtCore.QRect(80, 140, 81, 81))
        self.buttonprocent.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonprocent.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonprocent.setFont(font)
        self.buttonprocent.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.buttonprocent.setObjectName("buttonprocent")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.button7.setText(_translate("MainWindow", "7"))
        self.button8.setText(_translate("MainWindow", "8"))
        self.button9.setText(_translate("MainWindow", "9"))
        self.button4.setText(_translate("MainWindow", "4"))
        self.button5.setText(_translate("MainWindow", "5"))
        self.button6.setText(_translate("MainWindow", "6"))
        self.buttonpoint.setText(_translate("MainWindow", "."))
        self.button0.setText(_translate("MainWindow", "0"))
        self.buttonc.setText(_translate("MainWindow", "с"))
        self.button1.setText(_translate("MainWindow", "1"))
        self.button2.setText(_translate("MainWindow", "2"))
        self.button3.setText(_translate("MainWindow", "3"))
        self.buttonbackspace.setText(_translate("MainWindow", "<"))
        self.buttonadd.setText(_translate("MainWindow", "+"))
        self.buttonsub.setText(_translate("MainWindow", "-"))
        self.buttonmult.setText(_translate("MainWindow", "*"))
        self.buttondiv.setText(_translate("MainWindow", "/"))
        self.buttonequally.setText(_translate("MainWindow", "="))
        self.buttonprocent.setText(_translate("MainWindow", "%"))


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.button0.clicked.connect(lambda: self.write_number(self.button0.text()))
        self.button1.clicked.connect(lambda: self.write_number(self.button1.text()))
        self.button2.clicked.connect(lambda: self.write_number(self.button2.text()))
        self.button3.clicked.connect(lambda: self.write_number(self.button3.text()))
        self.button4.clicked.connect(lambda: self.write_number(self.button4.text()))
        self.button5.clicked.connect(lambda: self.write_number(self.button5.text()))
        self.button6.clicked.connect(lambda: self.write_number(self.button6.text()))
        self.button7.clicked.connect(lambda: self.write_number(self.button7.text()))
        self.button8.clicked.connect(lambda: self.write_number(self.button8.text()))
        self.button9.clicked.connect(lambda: self.write_number(self.button9.text()))
        self.buttonpoint.clicked.connect(lambda: self.write_number(self.buttonpoint.text()))
        self.buttonadd.clicked.connect(lambda: self.write_number(self.buttonadd.text()))
        self.buttonsub.clicked.connect(lambda: self.write_number(self.buttonsub.text()))
        self.buttondiv.clicked.connect(lambda: self.write_number(self.buttondiv.text()))
        self.buttonmult.clicked.connect(lambda: self.write_number(self.buttonmult.text()))
        self.buttonprocent.clicked.connect(lambda: self.write_number(self.buttonprocent.text()))
        self.buttonequally.clicked.connect(self.answer)
        self.buttonc.clicked.connect(self.clean)
        self.buttonbackspace.clicked.connect(self.del_last)



    def write_number(self, number):
        if self.input_data.text() == '0':
            self.input_data.setText(number)
        else:
            self.input_data.setText(self.input_data.text() + number)


    def del_last(self):
        text = self.input_data.text()
        if not text:
            self.input_data.setText('0')
        else:
            text = self.input_data.text()[:-1]
            self.input_data.setText(text)

    def clean(self):
        self.input_data.setText('0')

    def answer(self):
        result = eval(self.input_data.text())
        self.input_data.setText(str(result))



if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

Когда пытаюсь получить ответ, программа просто вылетает.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: S. Nick

Примерно так:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(320, 540)
        MainWindow.setMinimumSize(QtCore.QSize(320, 460))
        MainWindow.setMaximumSize(QtCore.QSize(320, 540))
        MainWindow.setStyleSheet("")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.input_data = QtWidgets.QLineEdit(self.centralwidget)
        self.input_data.setGeometry(QtCore.QRect(0, 0, 320, 140))
        self.input_data.setMinimumSize(QtCore.QSize(320, 140))
        self.input_data.setMaximumSize(QtCore.QSize(320, 140))
        font = QtGui.QFont()
        font.setPointSize(30)
        self.input_data.setFont(font)
        self.input_data.setStyleSheet("background-color: rgb(0, 0, 0);\n"
"border: none;\n"
"color: white;\n"
"")
        self.input_data.setText("")
        self.input_data.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.input_data.setObjectName("input_data")
        self.button7 = QtWidgets.QPushButton(self.centralwidget)
        self.button7.setGeometry(QtCore.QRect(0, 220, 81, 81))
        self.button7.setMinimumSize(QtCore.QSize(81, 81))
        self.button7.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button7.setFont(font)
        self.button7.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button7.setObjectName("button7")
        self.button8 = QtWidgets.QPushButton(self.centralwidget)
        self.button8.setGeometry(QtCore.QRect(80, 220, 81, 81))
        self.button8.setMinimumSize(QtCore.QSize(81, 81))
        self.button8.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button8.setFont(font)
        self.button8.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button8.setObjectName("button8")
        self.button9 = QtWidgets.QPushButton(self.centralwidget)
        self.button9.setGeometry(QtCore.QRect(160, 220, 81, 81))
        self.button9.setMinimumSize(QtCore.QSize(81, 81))
        self.button9.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button9.setFont(font)
        self.button9.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button9.setObjectName("button9")
        self.button4 = QtWidgets.QPushButton(self.centralwidget)
        self.button4.setGeometry(QtCore.QRect(0, 300, 81, 81))
        self.button4.setMinimumSize(QtCore.QSize(81, 81))
        self.button4.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button4.setFont(font)
        self.button4.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button4.setObjectName("button4")
        self.button5 = QtWidgets.QPushButton(self.centralwidget)
        self.button5.setGeometry(QtCore.QRect(80, 300, 81, 81))
        self.button5.setMinimumSize(QtCore.QSize(81, 81))
        self.button5.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button5.setFont(font)
        self.button5.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button5.setObjectName("button5")
        self.button6 = QtWidgets.QPushButton(self.centralwidget)
        self.button6.setGeometry(QtCore.QRect(160, 300, 81, 81))
        self.button6.setMinimumSize(QtCore.QSize(81, 81))
        self.button6.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button6.setFont(font)
        self.button6.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button6.setObjectName("button6")
        self.buttonpoint = QtWidgets.QPushButton(self.centralwidget)
        self.buttonpoint.setGeometry(QtCore.QRect(80, 460, 81, 81))
        self.buttonpoint.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonpoint.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonpoint.setFont(font)
        self.buttonpoint.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.buttonpoint.setObjectName("buttonpoint")
        self.button0 = QtWidgets.QPushButton(self.centralwidget)
        self.button0.setGeometry(QtCore.QRect(0, 460, 81, 81))
        self.button0.setMinimumSize(QtCore.QSize(81, 81))
        self.button0.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button0.setFont(font)
        self.button0.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button0.setObjectName("button0")
        self.buttonc = QtWidgets.QPushButton(self.centralwidget)
        self.buttonc.setGeometry(QtCore.QRect(0, 140, 81, 81))
        self.buttonc.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonc.setMaximumSize(QtCore.QSize(162, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonc.setFont(font)
        self.buttonc.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.buttonc.setObjectName("buttonc")
        self.button1 = QtWidgets.QPushButton(self.centralwidget)
        self.button1.setGeometry(QtCore.QRect(0, 380, 81, 81))
        self.button1.setMinimumSize(QtCore.QSize(81, 81))
        self.button1.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button1.setFont(font)
        self.button1.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button1.setObjectName("button1")
        self.button2 = QtWidgets.QPushButton(self.centralwidget)
        self.button2.setGeometry(QtCore.QRect(80, 380, 81, 81))
        self.button2.setMinimumSize(QtCore.QSize(81, 81))
        self.button2.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button2.setFont(font)
        self.button2.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button2.setObjectName("button2")
        self.button3 = QtWidgets.QPushButton(self.centralwidget)
        self.button3.setGeometry(QtCore.QRect(160, 380, 81, 81))
        self.button3.setMinimumSize(QtCore.QSize(81, 81))
        self.button3.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.button3.setFont(font)
        self.button3.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.button3.setObjectName("button3")
        self.buttonbackspace = QtWidgets.QPushButton(self.centralwidget)
        self.buttonbackspace.setGeometry(QtCore.QRect(160, 140, 81, 81))
        self.buttonbackspace.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonbackspace.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonbackspace.setFont(font)
        self.buttonbackspace.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.buttonbackspace.setObjectName("buttonbackspace")
        self.buttonadd = QtWidgets.QPushButton(self.centralwidget)
        self.buttonadd.setGeometry(QtCore.QRect(240, 140, 81, 81))
        self.buttonadd.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonadd.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonadd.setFont(font)
        self.buttonadd.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(12, 66, 68);\n"
"    border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
"    background-color: rgb(18, 103, 106);\n"
"}")
        self.buttonadd.setObjectName("buttonadd")
        self.buttonsub = QtWidgets.QPushButton(self.centralwidget)
        self.buttonsub.setGeometry(QtCore.QRect(240, 220, 81, 81))
        self.buttonsub.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonsub.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonsub.setFont(font)
        self.buttonsub.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(12, 66, 68);\n"
"    border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
"    background-color: rgb(18, 103, 106);\n"
"}")
        self.buttonsub.setObjectName("buttonsub")
        self.buttonmult = QtWidgets.QPushButton(self.centralwidget)
        self.buttonmult.setGeometry(QtCore.QRect(240, 300, 81, 81))
        self.buttonmult.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonmult.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonmult.setFont(font)
        self.buttonmult.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(12, 66, 68);\n"
"    border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
"    background-color: rgb(18, 103, 106);\n"
"}")
        self.buttonmult.setObjectName("buttonmult")
        self.buttondiv = QtWidgets.QPushButton(self.centralwidget)
        self.buttondiv.setGeometry(QtCore.QRect(240, 380, 81, 81))
        self.buttondiv.setMinimumSize(QtCore.QSize(81, 81))
        self.buttondiv.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttondiv.setFont(font)
        self.buttondiv.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(12, 66, 68);\n"
"    border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
"    background-color: rgb(18, 103, 106);\n"
"}")
        self.buttondiv.setObjectName("buttondiv")
        self.buttonequally = QtWidgets.QPushButton(self.centralwidget)
        self.buttonequally.setGeometry(QtCore.QRect(160, 460, 162, 81))
        self.buttonequally.setMinimumSize(QtCore.QSize(162, 81))
        self.buttonequally.setMaximumSize(QtCore.QSize(162, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonequally.setFont(font)
        self.buttonequally.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(41, 174, 161);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    background-color: rgb(31, 135, 125);\n"
"}")
        self.buttonequally.setObjectName("buttonequally")
        self.history = QtWidgets.QLabel(self.centralwidget)
        self.history.setGeometry(QtCore.QRect(50, 20, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(13)
        self.history.setFont(font)
        self.history.setStyleSheet("color: rgb(34, 187, 187);")
        self.history.setText("")
        self.history.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.history.setObjectName("history")
        self.buttonprocent = QtWidgets.QPushButton(self.centralwidget)
        self.buttonprocent.setGeometry(QtCore.QRect(80, 140, 81, 81))
        self.buttonprocent.setMinimumSize(QtCore.QSize(81, 81))
        self.buttonprocent.setMaximumSize(QtCore.QSize(81, 81))
        font = QtGui.QFont()
        font.setPointSize(20)
        self.buttonprocent.setFont(font)
        self.buttonprocent.setStyleSheet("QPushButton {\n"
"    color: #ffffff;\n"
"    background-color: rgb(5, 15, 17);\n"
"    border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    \n"
"    background-color: rgb(63, 63, 63);\n"
"}")
        self.buttonprocent.setObjectName("buttonprocent")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.button7.setText(_translate("MainWindow", "7"))
        self.button8.setText(_translate("MainWindow", "8"))
        self.button9.setText(_translate("MainWindow", "9"))
        self.button4.setText(_translate("MainWindow", "4"))
        self.button5.setText(_translate("MainWindow", "5"))
        self.button6.setText(_translate("MainWindow", "6"))
        self.buttonpoint.setText(_translate("MainWindow", "."))
        self.button0.setText(_translate("MainWindow", "0"))
        self.buttonc.setText(_translate("MainWindow", "с"))
        self.button1.setText(_translate("MainWindow", "1"))
        self.button2.setText(_translate("MainWindow", "2"))
        self.button3.setText(_translate("MainWindow", "3"))
        self.buttonbackspace.setText(_translate("MainWindow", "<"))
        self.buttonadd.setText(_translate("MainWindow", "+"))
        self.buttonsub.setText(_translate("MainWindow", "-"))
        self.buttonmult.setText(_translate("MainWindow", "*"))
        self.buttondiv.setText(_translate("MainWindow", "/"))
        self.buttonequally.setText(_translate("MainWindow", "="))
        self.buttonprocent.setText(_translate("MainWindow", "%"))


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.button0.clicked.connect(lambda: self.write_number(self.button0.text()))
        self.button1.clicked.connect(lambda: self.write_number(self.button1.text()))
        self.button2.clicked.connect(lambda: self.write_number(self.button2.text()))
        self.button3.clicked.connect(lambda: self.write_number(self.button3.text()))
        self.button4.clicked.connect(lambda: self.write_number(self.button4.text()))
        self.button5.clicked.connect(lambda: self.write_number(self.button5.text()))
        self.button6.clicked.connect(lambda: self.write_number(self.button6.text()))
        self.button7.clicked.connect(lambda: self.write_number(self.button7.text()))
        self.button8.clicked.connect(lambda: self.write_number(self.button8.text()))
        self.button9.clicked.connect(lambda: self.write_number(self.button9.text()))
        self.buttonpoint.clicked.connect(lambda: self.write_number(self.buttonpoint.text()))
        self.buttonadd.clicked.connect(lambda: self.write_number(self.buttonadd.text()))
        self.buttonsub.clicked.connect(lambda: self.write_number(self.buttonsub.text()))
        self.buttondiv.clicked.connect(lambda: self.write_number(self.buttondiv.text()))
        self.buttonmult.clicked.connect(lambda: self.write_number(self.buttonmult.text()))
        self.buttonprocent.clicked.connect(lambda: self.write_number(self.buttonprocent.text()))
        self.buttonequally.clicked.connect(self.answer)
        self.buttonc.clicked.connect(self.clean)
        self.buttonbackspace.clicked.connect(self.del_last)


# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
    def write_number(self, number):
        text = self.input_data.text()
 
        if number == '%':                                                         # !!!
            p = ''
            for i, s in enumerate(text[::-1]):
                if s in '0123456789':
                    p = f'{s}{p}'
                else:
                    p = f'{float(text[:-i-1]) / 100 * float(p)}'
                    text = f'{text[:-i]}{p}'
                    break
        
        if text == '0':
            self.input_data.setText(number)
        if number == '%':                                                         # !!!
            self.input_data.setText(text)
        else:
            self.input_data.setText(text + number)

    def del_last(self):
        text = self.input_data.text()                                             # +++
        if not text:
            self.input_data.setText('0')
        else:
            text = text[:-1]
            self.input_data.setText(text)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^            
            

    def clean(self):
        self.input_data.setText('0')

    def answer(self):
        #print(f'{self.input_data.text()}') 
        result = eval(self.input_data.text())
        self.input_data.setText(str(result))



if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка