Приложение не запускается: объект Engine не определено хотя везде задано ,

Помогите пожалуйста, программа не запускается пишет что имя Engine не определено хотя везде задано.

Как исправить ошибку?

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 PyQt5.QtWidgets import QFileDialog, QMessageBox, QApplication, QLineEdit, QMainWindow
from datetime import datetime
import sys
class MyWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setEnabled(True)
        MainWindow.resize(800, 608)
        MainWindow.setStyleSheet("background-color:#22222e")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(220, 80, 301, 61))
        self.lineEdit.setStyleSheet("background-color: #22222e;\n"
                                    "border: 2px solid #6B8E23;\n"
                                    "border-radius: 30;\n"
                                    "color: white")
        self.lineEdit.setObjectName("lineEdit")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(550, 80, 151, 61))
        self.pushButton.setStyleSheet("QPushButton {\n"
                                      "    color: white;\n"
                                      "    background-color:#6B8E23;\n"
                                      "    border-radius: 30;    \n"
                                      "}\n"
                                      "\n"
                                      "QPushButton:pressed {\n"
                                      "background-color: #90EE90\n"
                                      "}")
        self.pushButton.setObjectName("pushButton")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(220, 210, 311, 31))
        self.comboBox.setStyleSheet("background-color: #22222e;\n"
                                    "border: 2px solid #6B8E23;\n"
                                    "border-radius: 30;\n"
                                    "color: white")
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(220, 300, 301, 61))
        self.lineEdit_2.setStyleSheet("background-color: #22222e;\n"
                                      "border: 2px solid #6B8E23;\n"
                                      "border-radius: 30;\n"
                                      "color: white")
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_3.setGeometry(QtCore.QRect(220, 420, 311, 61))
        self.lineEdit_3.setStyleSheet("background-color: #22222e;\n"
                                      "border: 2px solid #6B8E23;\n"
                                      "border-radius: 30;\n"
                                      "color: white")
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(300, 500, 151, 61))
        self.pushButton_2.setStyleSheet("QPushButton {\n"
                                        "    color: white;\n"
                                        "    background-color:#6B8E23;\n"
                                        "    border-radius: 30;    \n"
                                        "}\n"
                                        "\n"
                                        "QPushButton:pressed {\n"
                                        "background-color: #90EE90\n"
                                        "}")
        self.pushButton_2.setObjectName("pushButton_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(270, 50, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_3.setFont(font)
        self.label_3.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(240, 180, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_4.setFont(font)
        self.label_4.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(230, 270, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_5.setFont(font)
        self.label_5.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(250, 390, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_6.setFont(font)
        self.label_6.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_6.setObjectName("label_6")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 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)

        class Engine(QMainWindow, MyWindow):
            def __init__(self) -> None:
                super().__init__()
                self.setupUi(self)
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Выбрать файл"))
        self.comboBox.setItemText(0, _translate("MainWindow", "Зашифровать"))
        self.comboBox.setItemText(1, _translate("MainWindow", "Расшифровать"))
        self.lineEdit_3.setText(_translate("MainWindow", "ваывавы"))
        self.pushButton_2.setText(_translate("MainWindow", "Запустить"))
        self.label_3.setText(_translate("MainWindow", "Введите имя файла"))
        self.label_4.setText(_translate("MainWindow", "            Выберите тип"))
        self.label_5.setText(_translate("MainWindow", "      Введите ключ от 1 до 90"))
        self.label_6.setText(_translate("MainWindow", "            Куда вывести"))

        def __init__(self, parent=None):
            super(MyWindow, self).__init__(parent)

        self.lineedit = QLineEdit(self)
        self.lineEdit_2 = QLineEdit()
        self.lineEdit_3 = QLineEdit()

        self.pushButton.clicked.connect(self.openFileNameDialog)


def openFileNameDialog(self):
    options = QFileDialog.Options()
    options |= QFileDialog.DontUseNativeDialog
    global filelist
    fileName, _ = QFileDialog.getOpenFileName(self, "Select Text file", "", "Text Files (*.txt)", options=options)
    if not fileName:
        fileName = None
    print(fileName)
    self.lineedit.setText(fileName)


def ciphering(self):
    self.filename = self.lineedit.text()
    self.optfilename = self.lineedit_2.text()
    self.process = self.combo.currentText()
    self.key = self.lineedit_3.text()

    ##########################

    assert isinstance(self.key, object)
    password_key = int(self.key)
    store = ''
    Letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz' \
              '!@#$%&*(){}[]<>/\|";:\n-=+.,?0123456789'
    now = datetime.now()
    print(now)

    option_1 = self.process
    if option_1 == 'Зашифровать':
        print('Ok Sir!..You Selected({0})'.format(option_1))
        file = self.filename
        if password_key == 0:
            QMessageBox.critical(self, "Incorrect Encryption Key Entered",
                                 "Please enter Encryption key in range of 1 - 90.")
        else:
            print("password key: ", password_key)
            if file.endswith('.txt'):
                try:
                    file = open(file, 'r').read()
                    print('Congratualtions output file saved.')
                except:
                    print('Filename Error: Please! Enter File name in txt form/Enter correct address of file.')
                for i in file:
                    if i in Letters:
                        number = Letters.find(i)
                        try:
                            number = number + int(password_key)
                        except:
                            print('Key Error: You Enter a Incorrect key.')
                            break
                        if number >= len(Letters):
                            number = number - len(Letters)
                        elif number < 0:
                            number = number + len(Letters)
                        store = store + Letters[number]
                    else:
                        store = store + i
                    save_file = open('{}.txt'.format(self.optfilename), 'w')
                    save_file.write(store)
                    save_file.close()
                QMessageBox.about(self, "аптаптаптаптап.",
                                  "птататптатпа {} апттпатаппт.".format(self.process))
            else:
                QMessageBox.critical(self, "тпата", "тпаттата.")


    elif option_1 == 'Расшифровать':
        print(' аптапаптпа({0})'.format(option_1))

        file = self.filename
        if password_key == 0:
            QMessageBox.critical(self, "апркепр.")
        else:
            if file.endswith('.txt'):
                try:
                    file = open(file, 'r').read()
                    print('успешно сохранено.')

                except:
                    print('Ошибка файла: пж.')
                for i in file:
                    if i in Letters:
                        number = Letters.find(i)
                        try:
                            number = number - int(password_key)
                        except:
                            print('Ошибка ключа: Ваш ключ не верный .')
                            break
                        if number >= len(Letters):
                            number = number - len(Letters)
                        elif number < 0:
                            number = number + len(Letters)
                        store = store + Letters[number]
                    else:
                        store = store + i
                    save_file = open('{}.txt'.format(self.optfilename), 'w')
                    save_file.write(store)
                    save_file.close()
                QMessageBox.about(self, "Процесс завершился.",
                                  "поздравляю {} успешно.".format(self.process))
            else:
                QMessageBox.critical(self, "Ошибка файла", "Введите txt форму .")

if __name__ == "__main__":
    App = QApplication(sys.argv)
    window = Engine()
    window.show()
    sys.exit(App.exec())

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

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

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

Я не проверял логику вашего приложения, но пару ошибок исправил.

import sys
from datetime import datetime
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog, QMessageBox, QApplication, \
    QLineEdit, QMainWindow


class MyWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setEnabled(True)
        MainWindow.resize(800, 608)
        MainWindow.setStyleSheet("background-color:#22222e")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(220, 80, 301, 61))
        self.lineEdit.setStyleSheet("background-color: #22222e;\n"
                                    "border: 2px solid #6B8E23;\n"
                                    "border-radius: 30;\n"
                                    "color: white")
        self.lineEdit.setObjectName("lineEdit")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(550, 80, 151, 61))
        self.pushButton.setStyleSheet("QPushButton {\n"
                                      "    color: white;\n"
                                      "    background-color:#6B8E23;\n"
                                      "    border-radius: 30;    \n"
                                      "}\n"
                                      "\n"
                                      "QPushButton:pressed {\n"
                                      "background-color: #90EE90\n"
                                      "}")
        self.pushButton.setObjectName("pushButton")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(220, 210, 311, 31))
        self.comboBox.setStyleSheet("background-color: #22222e;\n"
                                    "border: 2px solid #6B8E23;\n"
                                    "border-radius: 30;\n"
                                    "color: white")
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(220, 300, 301, 61))
        self.lineEdit_2.setStyleSheet("background-color: #22222e;\n"
                                      "border: 2px solid #6B8E23;\n"
                                      "border-radius: 30;\n"
                                      "color: white")
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_3.setGeometry(QtCore.QRect(220, 420, 311, 61))
        self.lineEdit_3.setStyleSheet("background-color: #22222e;\n"
                                      "border: 2px solid #6B8E23;\n"
                                      "border-radius: 30;\n"
                                      "color: white")
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(300, 500, 151, 61))
        self.pushButton_2.setStyleSheet("QPushButton {\n"
                                        "    color: white;\n"
                                        "    background-color:#6B8E23;\n"
                                        "    border-radius: 30;    \n"
                                        "}\n"
                                        "\n"
                                        "QPushButton:pressed {\n"
                                        "background-color: #90EE90\n"
                                        "}")
        self.pushButton_2.setObjectName("pushButton_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(270, 50, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_3.setFont(font)
        self.label_3.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(240, 180, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_4.setFont(font)
        self.label_4.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(230, 270, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_5.setFont(font)
        self.label_5.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(250, 390, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_6.setFont(font)
        self.label_6.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_6.setObjectName("label_6")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 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)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Выбрать файл"))
        self.comboBox.setItemText(0, _translate("MainWindow", "Зашифровать"))
        self.comboBox.setItemText(1, _translate("MainWindow", "Расшифровать"))
        self.lineEdit_3.setText(_translate("MainWindow", "ваывавы"))
        self.pushButton_2.setText(_translate("MainWindow", "Запустить"))
        self.label_3.setText(_translate("MainWindow", "Введите имя файла"))
        self.label_4.setText(_translate("MainWindow", "            Выберите тип"))
        self.label_5.setText(_translate("MainWindow", "      Введите ключ от 1 до 90"))
        self.label_6.setText(_translate("MainWindow", "            Куда вывести"))
        
        
class Engine(QMainWindow, MyWindow):
    def __init__(self) -> None:
        super().__init__()
        
        self.setupUi(self)

        self.pushButton.clicked.connect(self.openFileNameDialog)
        
        '''   # ???# ???# ???# ???# ???# ???# ???# ???# ???# ???# ???# ???
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Выбрать файл"))
        self.comboBox.setItemText(0, _translate("MainWindow", "Зашифровать"))
        self.comboBox.setItemText(1, _translate("MainWindow", "Расшифровать"))
        self.lineEdit_3.setText(_translate("MainWindow", "ваывавы"))
        self.pushButton_2.setText(_translate("MainWindow", "Запустить"))
        self.label_3.setText(_translate("MainWindow", "Введите имя файла"))
        self.label_4.setText(_translate("MainWindow", "            Выберите тип"))
        self.label_5.setText(_translate("MainWindow", "      Введите ключ от 1 до 90"))
        self.label_6.setText(_translate("MainWindow", "            Куда вывести"))

        def __init__(self, parent=None):
            super(MyWindow, self).__init__(parent)
        self.lineedit = QLineEdit(self)
        self.lineEdit_2 = QLineEdit()
        self.lineEdit_3 = QLineEdit()
        '''
        
    def openFileNameDialog(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
# ???        global filelist
        fileName, _ = QFileDialog.getOpenFileName(
            self, 
            "Select Text file", 
            "", 
            "Text Files (*.txt)", 
            options=options
        )
        if not fileName:
            fileName = None
        print(fileName)
#       self.lineedit.setText(fileName)
#            lineEdit
        self.lineEdit.setText(fileName)                              # +++ lineEdit

    def ciphering(self):
        self.filename = self.lineedit.text()
        self.optfilename = self.lineedit_2.text()
        self.process = self.combo.currentText()
        self.key = self.lineedit_3.text()

        assert isinstance(self.key, object)
        password_key = int(self.key)
        store = ''
        Letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz' \
                  '!@#$%&*(){}[]<>/\|";:\n-=+.,?0123456789'
        now = datetime.now()
        print(now)

        option_1 = self.process
        if option_1 == 'Зашифровать':
            print('Ok Sir!..You Selected({0})'.format(option_1))
            file = self.filename
            if password_key == 0:
                QMessageBox.critical(self, "Incorrect Encryption Key Entered",
                                     "Please enter Encryption key in range of 1 - 90.")
            else:
                print("password key: ", password_key)
                if file.endswith('.txt'):
                    try:
                        file = open(file, 'r').read()
                        print('Congratualtions output file saved.')
                    except:
                        print('Filename Error: Please! Enter File name in txt form/Enter correct address of file.')
                    for i in file:
                        if i in Letters:
                            number = Letters.find(i)
                            try:
                                number = number + int(password_key)
                            except:
                                print('Key Error: You Enter a Incorrect key.')
                                break
                            if number >= len(Letters):
                                number = number - len(Letters)
                            elif number < 0:
                                number = number + len(Letters)
                            store = store + Letters[number]
                        else:
                            store = store + i
                        save_file = open('{}.txt'.format(self.optfilename), 'w')
                        save_file.write(store)
                        save_file.close()
                    QMessageBox.about(self, "аптаптаптаптап.",
                                      "птататптатпа {} апттпатаппт.".format(self.process))
                else:
                    QMessageBox.critical(self, "тпата", "тпаттата.")

        elif option_1 == 'Расшифровать':
            print(' аптапаптпа({0})'.format(option_1))

            file = self.filename
            if password_key == 0:
                QMessageBox.critical(self, "апркепр.")
            else:
                if file.endswith('.txt'):
                    try:
                        file = open(file, 'r').read()
                        print('успешно сохранено.')
                    except:
                        print('Ошибка файла: пж.')
                        
                    for i in file:
                        if i in Letters:
                            number = Letters.find(i)
                            try:
                                number = number - int(password_key)
                            except:
                                print('Ошибка ключа: Ваш ключ не верный .')
                                break
                            if number >= len(Letters):
                                number = number - len(Letters)
                            elif number < 0:
                                number = number + len(Letters)
                            store = store + Letters[number]
                        else:
                            store = store + i
                        save_file = open('{}.txt'.format(self.optfilename), 'w')
                        save_file.write(store)
                        save_file.close()
                    QMessageBox.about(self, "Процесс завершился.",
                                      "поздравляю {} успешно.".format(self.process))
                else:
                    QMessageBox.critical(self, "Ошибка файла", "Введите txt форму .")


if __name__ == "__main__":
    App = QApplication(sys.argv)
    window = Engine()
    window.show()
    sys.exit(App.exec())

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

→ Ссылка