В вызванном окне не работает логика
Есть код, в котором пользователь заходит в программу по логину и паролю.
После входа программа запускает второстепенное окно, но логика этого окна не работает.
Как это исправить?
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("infinity")</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

