В вызванном окне не работает логика

Есть код, в котором пользователь заходит в программу по логину и паролю.
После входа программа запускает второстепенное окно, но логика этого окна не работает.
Как это исправить?

from PyQt5 import QtCore, QtGui, QtWidgets
#from register_window import Ui_MainWindow_Register
from to_book import Ui_MainWindow_BookUser
#from to_book_admin import Ui_MainWindow
from password_window import Ui_MainWindowPassword
from PyQt5.Qt import *


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

        self.setupUi(self)

        self.version = ".00.18.75"

        self.setWindowTitle("BookingToHotel" + self.version)

        self.pushButton.clicked.connect(self.App_Date)
        self.pushButton_2.clicked.connect(self.Register)

        self.settings()

    def settings(self):
        self.lineEdit.setPlaceholderText('Пожалуйста введите e-mail')
        self.lineEdit_2.setPlaceholderText('Пожалуйста введите пароль')

    def App_Date(self):

        password_check = False
        login_check = False

        login_check_admin = False
        password_check_admin = False

        user_password = self.lineEdit_2.text()
        user_login = self.lineEdit.text()
        if len(user_password) != 0 and len(user_login) != 0:
            with open('password.txt') as f:
                myListPassword = [line.split() for line in f]

            myListPassword_2 = [item for sublist in myListPassword for item in sublist]
            number_password = 0

            for i in range(len(myListPassword_2)):
                if str(user_password) == str(myListPassword_2[number_password]):
                    password_check = True
                else:
                    pass
                number_password += 1


            with open('login.txt') as f:
                myListLogin = [line.split() for line in f]

            myListLogin_2 = [item for sublist in myListLogin for item in sublist]
            number_login = 0

            for i in range(len(myListLogin_2)):
                if str(user_login) == str(myListLogin_2[number_login]):
                    login_check = True
                else:
                    pass
                number_login += 1

            if password_check == True and login_check == True:
                if number_password == number_login:
                    msg = QMessageBox()
                    msg.setIcon(QMessageBox.Information)
                    msg.setText("ИНФОРМАЦИЯ")
                    msg.setInformativeText('Вход в профиль пользователя выполнен')
                    msg.setWindowTitle("ИНФОРМАЦИЯ")
                    msg.exec_()

                    self.User()

                else:
                    msg = QMessageBox()
                    msg.setIcon(QMessageBox.Warning)
                    msg.setText("ОШИБКА")
                    msg.setInformativeText('Не верный логин или пароль')
                    msg.setWindowTitle("ОШИБКА")
                    msg.exec_()

            else:
                with open('password_admin.txt') as f:
                    myListPassword_admin = [line.split() for line in f]

                myListPassword_admin = [item for sublist in myListPassword_admin for item in sublist]
                number_password_admin = 0

                for i in range(len(myListPassword_admin)):
                    if str(user_password) == str(myListPassword_admin[number_password_admin]):
                        print(myListPassword_admin[number_password_admin])
                        password_check_admin = True
                    else:
                        pass
                    number_password_admin += 1


                with open('login_admin.txt') as f:
                    myListLogin_admin = [line.split() for line in f]

                myListLogin_admin = [item for sublist in myListLogin_admin for item in sublist]
                number_login_admin = 0
                print(myListLogin_admin)

                for i in range(len(myListLogin_admin)):
                    if str(user_login) == str(myListLogin_admin[number_login_admin]):
                        print(myListLogin_admin[number_login_admin])
                        login_check_admin = True
                    else:
                        pass
                    number_login_admin += 1

                if password_check_admin == True and login_check_admin == True:
                    if number_password_admin == number_login_admin:
                        msg = QMessageBox()
                        msg.setIcon(QMessageBox.Information)
                        msg.setText("ИНФОРМАЦИЯ")
                        msg.setInformativeText('Вход в профиль администратора выполнен.')
                        msg.setWindowTitle("ИНФОРМАЦИЯ")
                        msg.exec_()

                        self.Admin()

                    else:
                        msg = QMessageBox()
                        msg.setIcon(QMessageBox.Warning)
                        msg.setText("ОШИБКА")
                        msg.setInformativeText('Не верный логин или пароль.')
                        msg.setWindowTitle("ОШИБКА")
                        msg.exec_()
                else:
                    msg = QMessageBox()
                    msg.setIcon(QMessageBox.Warning)
                    msg.setText("ОШИБКА")
                    msg.setInformativeText('Логин или пароль не соответсвуют.')
                    msg.setWindowTitle("ОШИБКА")
                    msg.exec_()

        else:
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Warning)
            msg.setText("ОШИБКА")
            msg.setInformativeText('Обязательные поля не заполнены.')
            msg.setWindowTitle("ОШИБКА")
            msg.exec_()

    def User(self):
        self.window_user = QtWidgets.QMainWindow()
        self.ui = Ui_MainWindow_BookUser()
        self.ui.setupUi(self.window_user)
        self.window_user.show()

    def Admin(self):
        self.window_admin = QtWidgets.QMainWindow()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self.window_admin)
        self.window_admin.show()

    def Register(self):
        self.window_register = QtWidgets.QMainWindow()
        self.ui = Ui_MainWindow_Register()
        self.ui.setupUi(self.window_register)
        self.window_register.show()

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setStyle("Fusion")
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

password_window.py:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'password_window.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# 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


class Ui_MainWindowPassword(object):
    def setupUi(self, MainWindowPassword):
        MainWindowPassword.setObjectName("MainWindowPassword")
        MainWindowPassword.resize(307, 155)
        self.centralwidget = QtWidgets.QWidget(MainWindowPassword)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.gridLayout_2 = QtWidgets.QGridLayout()
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout_2.addWidget(self.pushButton, 0, 0, 1, 1)
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout_2.addWidget(self.pushButton_2, 0, 1, 1, 1)
        self.gridLayout.addLayout(self.gridLayout_2, 2, 0, 1, 2)
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setObjectName("lineEdit")
        self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 1)
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.gridLayout.addWidget(self.lineEdit_2, 1, 1, 1, 1)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 3, 0, 1, 1)
        MainWindowPassword.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindowPassword)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 307, 21))
        self.menubar.setObjectName("menubar")
        MainWindowPassword.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindowPassword)
        self.statusbar.setObjectName("statusbar")
        MainWindowPassword.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindowPassword):
        _translate = QtCore.QCoreApplication.translate
        MainWindowPassword.setWindowTitle(_translate("MainWindowPassword", "MainWindow"))
        self.label_2.setText(_translate("MainWindowPassword", "Password:"))
        self.pushButton.setText(_translate("MainWindowPassword", "Войти"))
        self.pushButton_2.setText(_translate("MainWindowPassword", "Зарегестрироваться"))
        self.label.setText(_translate("MainWindowPassword", "E-mail address:"))
        self.label_3.setText(_translate("MainWindowPassword", "<html><head/><body><p><span style=\" font-weight:600;\">(c)Copyright print(&quot;infinity&quot;)</span></p></body></html>"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindowPassword = QtWidgets.QMainWindow()
    ui = Ui_MainWindowPassword()
    ui.setupUi(MainWindowPassword)
    MainWindowPassword.show()
    sys.exit(app.exec_())

ВЫЗЫВАЕМОЕ ОКНО:

from PyQt5 import QtCore, QtGui, QtWidgets
from to_book import Ui_MainWindow_BookUser
from PyQt5.Qt import *

import os
import ast


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

        self.setupUi(self)

        self.version = ".00.18.75"

        self.setWindowTitle("BookingToHotel" + self.version)

        self.OpenDate()

    def OpenDate(self):
        directory_save_hotel = os.getcwd() + "/SaveDateHotel" + "/save_hotel.txt"
        if os.path.exists(directory_save_hotel) == True:
            with open(directory_save_hotel, 'r') as file:
                data = ast.literal_eval(file.read())
                print(data)

            NumberSave = 0
            for i in range(len(data)):
                row = data[NumberSave]
                self.addTableRow(row)
                NumberSave += 1
        else:
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Warning)
            msg.setText("ОШИБКА")
            msg.setInformativeText('Файл с данными не найден')
            msg.setWindowTitle("ОШИБКА")
            msg.exec_()

    def addTableRow(self, row_data):
        row = self.tableWidget.rowCount()
        self.tableWidget.setRowCount(row + 1)
        col = 0

        for item in row_data:
            cell = QTableWidgetItem(str(item))
            self.tableWidget.setItem(row, col, cell)
            col += 1


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setStyle("Fusion")
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())
    введите сюда код

to_book.py:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'to_book.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# 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


class Ui_MainWindow_BookUser(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(660, 470)
        MainWindow.setStyleSheet("QGroupBox{\n"
"    min-width:  640px;\n"
"    max-width: 640px;\n"
"    min-height: 419px;\n"
"    max-height: 419px;\n"
"}\n"
"")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox.setGeometry(QtCore.QRect(9, 9, 642, 421))
        self.groupBox.setObjectName("groupBox")
        self.gridLayout = QtWidgets.QGridLayout(self.groupBox)
        self.gridLayout.setObjectName("gridLayout")
        self.gridLayout_5 = QtWidgets.QGridLayout()
        self.gridLayout_5.setObjectName("gridLayout_5")
        self.tableWidget = QtWidgets.QTableWidget(self.groupBox)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(5)
        self.tableWidget.setRowCount(1)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(4, item)
        self.gridLayout_5.addWidget(self.tableWidget, 0, 0, 1, 1)
        self.gridLayout.addLayout(self.gridLayout_5, 0, 0, 1, 1)
        self.gridLayout_2 = QtWidgets.QGridLayout()
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.pushButton = QtWidgets.QPushButton(self.groupBox)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout_2.addWidget(self.pushButton, 0, 0, 1, 1)
        self.gridLayout.addLayout(self.gridLayout_2, 1, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 660, 21))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.action = QtWidgets.QAction(MainWindow)
        self.action.setObjectName("action")
        self.action_3 = QtWidgets.QAction(MainWindow)
        self.action_3.setObjectName("action_3")
        self.menu.addAction(self.action)
        self.menu.addSeparator()
        self.menu.addAction(self.action_3)
        self.menubar.addAction(self.menu.menuAction())

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.groupBox.setTitle(_translate("MainWindow", "Варианты номеров"))
        item = self.tableWidget.verticalHeaderItem(0)
        item.setText(_translate("MainWindow", "__"))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "Изображение"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "Адрес"))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("MainWindow", "Цена за ночь"))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("MainWindow", "Номер отеля"))
        item = self.tableWidget.horizontalHeaderItem(4)
        item.setText(_translate("MainWindow", "Оценка"))
        self.pushButton.setText(_translate("MainWindow", "Забронировать"))
        self.menu.setTitle(_translate("MainWindow", "Главное"))
        self.action.setText(_translate("MainWindow", "Профиль пользователя"))
        self.action_3.setText(_translate("MainWindow", "Выйти"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow_BookUser()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

ПРИМЕРЫ ДАННЫХ В ФАЙЛАХ: password.txt

147852
258963

login.txt

[email protected]
[email protected]

save_hotel.txt

[['No data', 'No data', 'No data', 'No data', 'No data', 'No data'], ['No data', 'No data', 'No data', 'No data', 'No data', 'No data'], ['No data', 'No data', 'No data', 'No data', 'No data', 'No data'], ['No data', 'No data', 'No data', 'No data', 'No data', 'No data']]

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

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

Я отметил строки, которые вам надо изменить.

main.py

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *

from password_window import Ui_MainWindowPassword

# from to_book import Ui_MainWindow_BookUser
from q1414989_2 import MainWindow as  MainWindowBook                      # !!! +++                              



class MainWindow(QtWidgets.QMainWindow, Ui_MainWindowPassword):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.version = ".00.18.75"
        self.setWindowTitle("BookingToHotel" + self.version)

        self.pushButton.clicked.connect(self.App_Date)
        self.pushButton_2.clicked.connect(self.Register)

        self.settings()

    def settings(self):
        self.lineEdit.setPlaceholderText('Пожалуйста введите e-mail')
        self.lineEdit_2.setPlaceholderText('Пожалуйста введите пароль')

    def App_Date(self):

        password_check = False
        login_check = False

        login_check_admin = False
        password_check_admin = False

        user_password = self.lineEdit_2.text()
        user_login = self.lineEdit.text()
        if len(user_password) != 0 and len(user_login) != 0:
            with open('password.txt') as f:
                myListPassword = [line.split() for line in f]

            myListPassword_2 = [item for sublist in myListPassword for item in sublist]
            number_password = 0

            for i in range(len(myListPassword_2)):
                if str(user_password) == str(myListPassword_2[number_password]):
                    password_check = True
                else:
                    pass
                number_password += 1

            with open('login.txt') as f:
                myListLogin = [line.split() for line in f]

            myListLogin_2 = [item for sublist in myListLogin for item in sublist]
            number_login = 0

            for i in range(len(myListLogin_2)):
                if str(user_login) == str(myListLogin_2[number_login]):
                    login_check = True
                else:
                    pass
                number_login += 1

            if password_check == True and login_check == True:
                if number_password == number_login:
                    msg = QMessageBox()
                    msg.setIcon(QMessageBox.Information)
                    msg.setText("ИНФОРМАЦИЯ")
                    msg.setInformativeText('Вход в профиль пользователя выполнен')
                    msg.setWindowTitle("ИНФОРМАЦИЯ")
                    msg.exec_()

                    self.User()

                else:
                    msg = QMessageBox()
                    msg.setIcon(QMessageBox.Warning)
                    msg.setText("ОШИБКА")
                    msg.setInformativeText('Не верный логин или пароль')
                    msg.setWindowTitle("ОШИБКА")
                    msg.exec_()

            else:
                with open('password_admin.txt') as f:
                    myListPassword_admin = [line.split() for line in f]

                myListPassword_admin = [item for sublist in myListPassword_admin for item in sublist]
                number_password_admin = 0

                for i in range(len(myListPassword_admin)):
                    if str(user_password) == str(myListPassword_admin[number_password_admin]):
                        print(myListPassword_admin[number_password_admin])
                        password_check_admin = True
                    else:
                        pass
                    number_password_admin += 1

                with open('login_admin.txt') as f:
                    myListLogin_admin = [line.split() for line in f]

                myListLogin_admin = [item for sublist in myListLogin_admin for item in sublist]
                number_login_admin = 0
                print(myListLogin_admin)

                for i in range(len(myListLogin_admin)):
                    if str(user_login) == str(myListLogin_admin[number_login_admin]):
                        print(myListLogin_admin[number_login_admin])
                        login_check_admin = True
                    else:
                        pass
                    number_login_admin += 1

                if password_check_admin == True and login_check_admin == True:
                    if number_password_admin == number_login_admin:
                        msg = QMessageBox()
                        msg.setIcon(QMessageBox.Information)
                        msg.setText("ИНФОРМАЦИЯ")
                        msg.setInformativeText('Вход в профиль администратора выполнен.')
                        msg.setWindowTitle("ИНФОРМАЦИЯ")
                        msg.exec_()

                        self.Admin()

                    else:
                        msg = QMessageBox()
                        msg.setIcon(QMessageBox.Warning)
                        msg.setText("ОШИБКА")
                        msg.setInformativeText('Не верный логин или пароль.')
                        msg.setWindowTitle("ОШИБКА")
                        msg.exec_()
                else:
                    msg = QMessageBox()
                    msg.setIcon(QMessageBox.Warning)
                    msg.setText("ОШИБКА")
                    msg.setInformativeText('Логин или пароль не соответсвуют.')
                    msg.setWindowTitle("ОШИБКА")
                    msg.exec_()

        else:
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Warning)
            msg.setText("ОШИБКА")
            msg.setInformativeText('Обязательные поля не заполнены.')
            msg.setWindowTitle("ОШИБКА")
            msg.exec_()

    def User(self):
     
# -        self.window_user = QtWidgets.QMainWindow()
# -        self.ui = Ui_MainWindow_BookUser()
# -        self.ui.setupUi(self.window_user)
# -        self.window_user.show()
# !!! +++
        self.window_user = MainWindowBook()                            # !!! +++
        self.window_user.show()                                        # !!! +++

    def Admin(self):
        self.window_admin = QtWidgets.QMainWindow()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self.window_admin)
        self.window_admin.show()

    def Register(self):
        pass
        '''
        self.window_register = QtWidgets.QMainWindow()
        self.ui = Ui_MainWindow_Register()
        self.ui.setupUi(self.window_register)
        self.window_register.show()
        '''


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setStyle("Fusion")
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

q1414989_2.py

from PyQt5 import QtCore, QtGui, QtWidgets
from to_book import Ui_MainWindow_BookUser
from PyQt5.Qt import *

import os
import ast


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow_BookUser):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.version = ".00.18.75"
        self.setWindowTitle("BookingToHotel" + self.version)

        self.OpenDate()

    def OpenDate(self):
# !!! установите свое           vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv   
#        directory_save_hotel = os.getcwd() + "/SaveDateHotel" + "/save_hotel.txt"
        directory_save_hotel = "save_hotel.txt"                                    # !!! уберите
        
        if os.path.exists(directory_save_hotel) == True:
            with open(directory_save_hotel, 'r') as file:
                data = ast.literal_eval(file.read())
                print(f'data = \n{data}\n')

            NumberSave = 0
            for i in range(len(data)):
                row = data[NumberSave]
                self.addTableRow(row)
                NumberSave += 1
        else:
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Warning)
            msg.setText("ОШИБКА")
            msg.setInformativeText('Файл с данными не найден')
            msg.setWindowTitle("ОШИБКА")
            msg.exec_()

    def addTableRow(self, row_data):
        row = self.tableWidget.rowCount()
        self.tableWidget.setRowCount(row + 1)
        col = 0

        for item in row_data:
            cell = QTableWidgetItem(str(item))
            self.tableWidget.setItem(row, col, cell)
            col += 1

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

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

→ Ссылка