Как сделать постоянно всплывающие сообщения об ошибках в калькуляторе

Мне нужно, чтобы работали сообщения о неправильности выражений.

Например, при введении двух знаков деления "//" и нажатия кнопки "=" программа просто завершается. Нужно, чтобы появлялось всплывающее окно об ошибке.

P.S. Эта функция уже есть для двойного нажатия знака "="

Вот код для знака "=":

self.is_equal = False
def results(self):
    if not self.is_equal:
        res = eval(self.label_result.text())
        self.label_result.setText("Результат: " + str(res))
        self.is_equal = True
    else:
        error = QMessageBox()
        error.setWindowTitle("Ошибка")
        error.setText("Сейчас это действие выполнить нельзя")
        error.setIcon(QMessageBox.Warning)
        error.setStandardButtons(QMessageBox.Reset|QMessageBox.Cancel|QMessageBox.Ok)

        error.setDefaultButton(QMessageBox.Ok)
        error.setInformativeText("Два раза действие не выполнить")
        error.setDetailedText("Нельзя находить результат при отсутствии элеметов")

        error.buttonClicked.connect(self.popup_action)

        error.exec_()

Вот полный код:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(407, 404)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.label_result = QtWidgets.QLabel(self.centralwidget)
    self.label_result.setGeometry(QtCore.QRect(0, 0, 361, 41))
    font = QtGui.QFont()
    font.setFamily("MS UI Gothic")
    font.setPointSize(15)
    font.setBold(True)
    font.setWeight(75)
    self.label_result.setFont(font)
    self.label_result.setStyleSheet("background-color: rgb(130, 130,130);\n""color: rgb(255, 255, 255);\n""")
self.label_result.setObjectName("label_result")
    self.btn_0 = QtWidgets.QPushButton(self.centralwidget)
    self.btn_0.setGeometry(QtCore.QRect(0, 280, 151, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_0.setFont(font)
    self.btn_0.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_0.setObjectName("btn_0")
    self.solve = QtWidgets.QPushButton(self.centralwidget)
    self.solve.setGeometry(QtCore.QRect(150, 279, 151, 81))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.solve.setFont(font)
    self.solve.setStyleSheet("background-color: rgb(184, 28, 28);")
    self.solve.setObjectName("solve")
    self.btn_1 = QtWidgets.QPushButton(self.centralwidget)
    self.btn_1.setGeometry(QtCore.QRect(0, 200, 101, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_1.setFont(font)
    self.btn_1.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_1.setObjectName("btn_1")
    self.btn_2 = QtWidgets.QPushButton(self.centralwidget)
    self.btn_2.setGeometry(QtCore.QRect(100, 200, 101, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_2.setFont(font)
    self.btn_2.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_2.setObjectName("btn_2")
    self.btn_3 = QtWidgets.QPushButton(self.centralwidget)
    self.btn_3.setGeometry(QtCore.QRect(200, 200, 101, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_3.setFont(font)
    self.btn_3.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_3.setObjectName("btn_3")
    self.btn_6 = QtWidgets.QPushButton(self.centralwidget)
    self.btn_6.setGeometry(QtCore.QRect(200, 120, 101, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_6.setFont(font)
    self.btn_6.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_6.setObjectName("btn_6")
    self.btn_4 = QtWidgets.QPushButton(self.centralwidget)
    self.btn_4.setGeometry(QtCore.QRect(0, 120, 101, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_4.setFont(font)
    self.btn_4.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_4.setObjectName("btn_4")
    self.btn_5 = QtWidgets.QPushButton(self.centralwidget)
    self.btn_5.setGeometry(QtCore.QRect(100, 120, 101, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_5.setFont(font)
    self.btn_5.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_5.setObjectName("btn_5")
    self.btn_9 = QtWidgets.QPushButton(self.centralwidget)
    self.btn_9.setGeometry(QtCore.QRect(200, 40, 101, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_9.setFont(font)
    self.btn_9.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_9.setObjectName("btn_9")
    self.btn_7 = QtWidgets.QPushButton(self.centralwidget)
    self.btn_7.setGeometry(QtCore.QRect(0, 40, 101, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_7.setFont(font)
    self.btn_7.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_7.setObjectName("btn_7")
    self.btn_8 = QtWidgets.QPushButton(self.centralwidget)
    self.btn_8.setGeometry(QtCore.QRect(100, 40, 101, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_8.setFont(font)
    self.btn_8.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_8.setObjectName("btn_8")
    self.btn_slash = QtWidgets.QPushButton(self.centralwidget)
    self.btn_slash.setGeometry(QtCore.QRect(300, 280, 61, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_slash.setFont(font)
    self.btn_slash.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_slash.setObjectName("btn_slash")
    self.btn_star = QtWidgets.QPushButton(self.centralwidget)
    self.btn_star.setGeometry(QtCore.QRect(300, 200, 61, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_star.setFont(font)
    self.btn_star.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_star.setObjectName("btn_star")
    self.btn_minus = QtWidgets.QPushButton(self.centralwidget)
    self.btn_minus.setGeometry(QtCore.QRect(300, 120, 61, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_minus.setFont(font)
    self.btn_minus.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_minus.setObjectName("btn_minus")
    self.btn_plus = QtWidgets.QPushButton(self.centralwidget)
    self.btn_plus.setGeometry(QtCore.QRect(300, 40, 61, 80))
    font = QtGui.QFont()
    font.setPointSize(17)
    font.setBold(True)
    font.setWeight(75)
    self.btn_plus.setFont(font)
    self.btn_plus.setStyleSheet("background-color: rgb(217, 101, 0);")
    self.btn_plus.setObjectName("btn_plus")
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtWidgets.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 407, 21))
    self.menubar.setObjectName("menubar")
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QtWidgets.QStatusBar(MainWindow)
    self.statusbar.setObjectName("statusbar")
    MainWindow.setStatusBar(self.statusbar)

    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", "Калькулятор"))
    self.label_result.setText(_translate("MainWindow", "0"))
    self.btn_0.setText(_translate("MainWindow", "0"))
    self.solve.setText(_translate("MainWindow", "="))
    self.btn_1.setText(_translate("MainWindow", "1"))
    self.btn_2.setText(_translate("MainWindow", "2"))
    self.btn_3.setText(_translate("MainWindow", "3"))
    self.btn_6.setText(_translate("MainWindow", "6"))
    self.btn_4.setText(_translate("MainWindow", "4"))
    self.btn_5.setText(_translate("MainWindow", "5"))
    self.btn_9.setText(_translate("MainWindow", "9"))
    self.btn_7.setText(_translate("MainWindow", "7"))
    self.btn_8.setText(_translate("MainWindow", "8"))
    self.btn_slash.setText(_translate("MainWindow", "/"))
    self.btn_star.setText(_translate("MainWindow", "*"))
    self.btn_minus.setText(_translate("MainWindow", "-"))
    self.btn_plus.setText(_translate("MainWindow", "+"))

def add_functions(self):
    self.btn_0.clicked.connect(lambda: self.write_number(self.btn_0.text()))
    self.btn_1.clicked.connect(lambda: self.write_number(self.btn_1.text()))
    self.btn_2.clicked.connect(lambda: self.write_number(self.btn_2.text()))
    self.btn_3.clicked.connect(lambda: self.write_number(self.btn_3.text()))
    self.btn_4.clicked.connect(lambda: self.write_number(self.btn_4.text()))
    self.btn_5.clicked.connect(lambda: self.write_number(self.btn_5.text()))
    self.btn_6.clicked.connect(lambda: self.write_number(self.btn_6.text()))
    self.btn_7.clicked.connect(lambda: self.write_number(self.btn_7.text()))
    self.btn_8.clicked.connect(lambda: self.write_number(self.btn_8.text()))
    self.btn_9.clicked.connect(lambda: self.write_number(self.btn_9.text()))
    self.btn_plus.clicked.connect(lambda: self.write_number(self.btn_plus.text()))
    self.btn_minus.clicked.connect(lambda: self.write_number(self.btn_minus.text()))
    self.btn_star.clicked.connect(lambda: self.write_number(self.btn_star.text()))
    self.btn_slash.clicked.connect(lambda: self.write_number(self.btn_slash.text()))


    self.solve.clicked.connect(self.results)

def write_number(self, number):
    if self.label_result.text() == "0" or self.is_equal:
        self.label_result.setText(number)
        self.is_equal = False
    else:
        self.label_result.setText(self.label_result.text() + number)


def results(self):
    if not self.is_equal:
        res = eval(self.label_result.text())
        self.label_result.setText("Результат: " + str(res))
        self.is_equal = True
    else:
        error = QMessageBox()
        error.setWindowTitle("Ошибка")
        error.setText("Сейчас это действие выполнить нельзя")
        error.setIcon(QMessageBox.Warning)
        error.setStandardButtons(QMessageBox.Reset|QMessageBox.Cancel|QMessageBox.Ok)

        error.setDefaultButton(QMessageBox.Ok)
        error.setInformativeText("Два раза действие не выполнить")
        error.setDetailedText("Нельзя находить результат при отсутствии элеметов")

        error.buttonClicked.connect(self.popup_action)

        error.exec_()



def popup_action(self, btn):
    if btn.text() == "Ok":
        print("Print Ok")
    elif btn.text() == "Reset":
        self.label_result.setText("")
        self.is_equal = False


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_())
   

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

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

НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.

Как вариант:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(362, 360)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label_result = QtWidgets.QLabel(self.centralwidget)
        self.label_result.setGeometry(QtCore.QRect(0, 0, 361, 41))
        font = QtGui.QFont()
        font.setFamily("MS UI Gothic")
        font.setPointSize(15)
        font.setBold(True)
        font.setWeight(75)
        self.label_result.setFont(font)
        self.label_result.setStyleSheet("""
            background-color: rgb(130, 130,130);
            color: rgb(255, 255, 255);
        """)
        self.label_result.setObjectName("label_result")
        
        self.btn_0 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_0.setGeometry(QtCore.QRect(0, 280, 151, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_0.setFont(font)
        self.btn_0.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_0.setObjectName("btn_0")
        self.solve = QtWidgets.QPushButton(self.centralwidget)
        self.solve.setGeometry(QtCore.QRect(150, 279, 151, 81))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.solve.setFont(font)
        self.solve.setStyleSheet("background-color: rgb(184, 28, 28);")
        self.solve.setObjectName("solve")
        self.btn_1 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_1.setGeometry(QtCore.QRect(0, 200, 101, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_1.setFont(font)
        self.btn_1.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_1.setObjectName("btn_1")
        self.btn_2 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_2.setGeometry(QtCore.QRect(100, 200, 101, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_2.setFont(font)
        self.btn_2.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_2.setObjectName("btn_2")
        self.btn_3 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_3.setGeometry(QtCore.QRect(200, 200, 101, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_3.setFont(font)
        self.btn_3.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_3.setObjectName("btn_3")
        self.btn_6 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_6.setGeometry(QtCore.QRect(200, 120, 101, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_6.setFont(font)
        self.btn_6.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_6.setObjectName("btn_6")
        self.btn_4 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_4.setGeometry(QtCore.QRect(0, 120, 101, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_4.setFont(font)
        self.btn_4.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_4.setObjectName("btn_4")
        self.btn_5 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_5.setGeometry(QtCore.QRect(100, 120, 101, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_5.setFont(font)
        self.btn_5.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_5.setObjectName("btn_5")
        self.btn_9 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_9.setGeometry(QtCore.QRect(200, 40, 101, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_9.setFont(font)
        self.btn_9.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_9.setObjectName("btn_9")
        self.btn_7 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_7.setGeometry(QtCore.QRect(0, 40, 101, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_7.setFont(font)
        self.btn_7.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_7.setObjectName("btn_7")
        self.btn_8 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_8.setGeometry(QtCore.QRect(100, 40, 101, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_8.setFont(font)
        self.btn_8.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_8.setObjectName("btn_8")
        self.btn_slash = QtWidgets.QPushButton(self.centralwidget)
        self.btn_slash.setGeometry(QtCore.QRect(300, 280, 61, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_slash.setFont(font)
        self.btn_slash.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_slash.setObjectName("btn_slash")
        self.btn_star = QtWidgets.QPushButton(self.centralwidget)
        self.btn_star.setGeometry(QtCore.QRect(300, 200, 61, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_star.setFont(font)
        self.btn_star.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_star.setObjectName("btn_star")
        self.btn_minus = QtWidgets.QPushButton(self.centralwidget)
        self.btn_minus.setGeometry(QtCore.QRect(300, 120, 61, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_minus.setFont(font)
        self.btn_minus.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_minus.setObjectName("btn_minus")
        self.btn_plus = QtWidgets.QPushButton(self.centralwidget)
        self.btn_plus.setGeometry(QtCore.QRect(300, 40, 61, 80))
        font = QtGui.QFont()
        font.setPointSize(17)
        font.setBold(True)
        font.setWeight(75)
        self.btn_plus.setFont(font)
        self.btn_plus.setStyleSheet("background-color: rgb(217, 101, 0);")
        self.btn_plus.setObjectName("btn_plus")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 407, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        
#        self.statusbar = QtWidgets.QStatusBar(MainWindow)
#        self.statusbar.setObjectName("statusbar")
#        MainWindow.setStatusBar(self.statusbar)

        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", "Калькулятор"))
        self.label_result.setText(_translate("MainWindow", "0"))
        self.btn_0.setText(_translate("MainWindow", "0"))
        self.solve.setText(_translate("MainWindow", "="))
        self.btn_1.setText(_translate("MainWindow", "1"))
        self.btn_2.setText(_translate("MainWindow", "2"))
        self.btn_3.setText(_translate("MainWindow", "3"))
        self.btn_6.setText(_translate("MainWindow", "6"))
        self.btn_4.setText(_translate("MainWindow", "4"))
        self.btn_5.setText(_translate("MainWindow", "5"))
        self.btn_9.setText(_translate("MainWindow", "9"))
        self.btn_7.setText(_translate("MainWindow", "7"))
        self.btn_8.setText(_translate("MainWindow", "8"))
        self.btn_slash.setText(_translate("MainWindow", "/"))
        self.btn_star.setText(_translate("MainWindow", "*"))
        self.btn_minus.setText(_translate("MainWindow", "-"))
        self.btn_plus.setText(_translate("MainWindow", "+"))
        
        
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.is_equal = False
        self.add_functions()        

    def add_functions(self):
        self.btn_0.clicked.connect(lambda: self.write_number(self.btn_0.text()))
        self.btn_1.clicked.connect(lambda: self.write_number(self.btn_1.text()))
        self.btn_2.clicked.connect(lambda: self.write_number(self.btn_2.text()))
        self.btn_3.clicked.connect(lambda: self.write_number(self.btn_3.text()))
        self.btn_4.clicked.connect(lambda: self.write_number(self.btn_4.text()))
        self.btn_5.clicked.connect(lambda: self.write_number(self.btn_5.text()))
        self.btn_6.clicked.connect(lambda: self.write_number(self.btn_6.text()))
        self.btn_7.clicked.connect(lambda: self.write_number(self.btn_7.text()))
        self.btn_8.clicked.connect(lambda: self.write_number(self.btn_8.text()))
        self.btn_9.clicked.connect(lambda: self.write_number(self.btn_9.text()))
        self.btn_plus.clicked.connect(lambda: self.write_number(self.btn_plus.text()))
        self.btn_minus.clicked.connect(lambda: self.write_number(self.btn_minus.text()))
        self.btn_star.clicked.connect(lambda: self.write_number(self.btn_star.text()))
        self.btn_slash.clicked.connect(lambda: self.write_number(self.btn_slash.text()))

        self.solve.clicked.connect(self.results)

    def write_number(self, number):
        if self.label_result.text() == "0" or self.is_equal:
            self.label_result.setText(number)
            self.is_equal = False
        else:
            self.label_result.setText(self.label_result.text() + number)


    def results(self):
        if not self.is_equal:
        
            try: 
                res = eval(self.label_result.text())
                self.label_result.setText("Результат: " + str(res))
                self.is_equal = True
            except Exception as e:
                msg = QtWidgets.QMessageBox.information(
                    self, 
                    'Внимание', 
                    f'Что-то пошло не так: \n{e}')
                self.label_result.clear()
            
        else:
            error = QMessageBox()
            error.setWindowTitle("Ошибка")
            error.setText("Сейчас это действие выполнить нельзя")
            error.setIcon(QMessageBox.Warning)
            error.setStandardButtons(QMessageBox.Reset|QMessageBox.Cancel|QMessageBox.Ok)

            error.setDefaultButton(QMessageBox.Ok)
            error.setInformativeText("Два раза действие не выполнить")
            error.setDetailedText("Нельзя находить результат при отсутствии элеметов")

            error.buttonClicked.connect(self.popup_action)

            error.exec_()

    def popup_action(self, btn):
        if btn.text() == "Ok":
            print("Print Ok")
        elif btn.text() == "Reset":
            self.label_result.setText("")
            self.is_equal = False


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

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

→ Ссылка
Автор решения: Булат

попробуй обернуть try except

    def results(self):
        try:
            res = eval(self.display_lbl.text())
            self.display_lbl.setText('Результат: '+ str(res))
        except ZeroDivisionError as e:
            self.display_lbl.setText('Ошибка деление ноль')
        except Exception as e:
            self.display_lbl.setText('Ошибка') 
→ Ссылка