Как сделать постоянно всплывающие сообщения об ошибках в калькуляторе
Мне нужно, чтобы работали сообщения о неправильности выражений.
Например, при введении двух знаков деления "//" и нажатия кнопки "=" программа просто завершается. Нужно, чтобы появлялось всплывающее окно об ошибке.
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('Ошибка')

