Не корректно сравниваются данные
Я сделал программу для проверки правильности логина и пароля, все логины и пароля записаны в два файла: password, login, после чего данные сравниваются, если такого пароля или логина нет, то выдается ошибка, но почему то при введение корректного пароля все ровно получаю ошибку.
Как это исправить?
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def App_Date(self):
with open('password.txt') as f:
myListPassword = [line.split() for line in f]
user_password = self.lineEdit_2.text()
print(myListPassword)
with open('login.txt') as f:
myListLogin = [line.split() for line in f]
user_login = self.lineEdit.text()
print(myListLogin)
print(len(myListPassword))
number_password = 0
for i in range(len(myListPassword)):
if user_password == myListPassword[number_password]:
print("Пароль совпал")
else:
print("Пароль не совпал!")
print(user_password)
print(myListPassword[number_password])
number_password += 1
def User_Admin(self):
pass
def Register(self):
pass
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(307, 136)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
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_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)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 307, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.pushButton.clicked.connect(self.App_Date)
# self.pushButton_2.clicked.connect(self.)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "E-mail address:"))
self.label_2.setText(_translate("MainWindow", "Password:"))
self.pushButton.setText(_translate("MainWindow", "Войти"))
self.pushButton_2.setText(_translate("MainWindow", "Зарегестрироваться"))
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 шт):
Разобрался в проблеме, полученные данные таким путем нельзя корректно сравнивать, их нужно записать в таком виде: ["[email protected]", "[email protected]".
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
class Ui_MainWindow(object):
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_()
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_()
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):
pass
def Admin(self):
pass
def Register(self):
pass
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(307, 136)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
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_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)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 307, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.pushButton.clicked.connect(self.App_Date)
# self.pushButton_2.clicked.connect(self.)
self.settings()
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "E-mail адрес:"))
self.label_2.setText(_translate("MainWindow", "Пароль:"))
self.pushButton.setText(_translate("MainWindow", "Войти"))
self.pushButton_2.setText(_translate("MainWindow", "Зарегестрироваться"))
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_())
Я плохо понимаю вашу логику проверки логина и пароля.
Ваша идея с двумя файлами текстового формата - плохая.
Вам надо посмотреть в сторону БД.
Добавьте [0] в две строки.
...
for i in range(len(myListPassword)):
# --------------------------------------------------->vvv
if user_password == myListPassword[number_password][0]: # + [0]
print("Пароль совпал")
else:
print("Пароль не совпал!")
print(user_password)
# ------------------------------------->vvv
print(myListPassword[number_password][0]) # + [0]
number_password += 1
...
НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.