Вы должны улучшить свою логику, вместо выбора return USER_EMAIL
должен вернуть USER_FULLNAME
, чтобы вы не делали новый запрос, с другой стороны, чтобы получить результаты, которые вы должны использовать fetchall()
, это вернет кортеж результатов, если результаты не будут пустыми, в противном случае будут результаты. В вашем случае я предполагаю, что вы ограничиваете USER_EMAIL
уникальностью, так что результатом будет кортеж из одного элемента. Эти данные вы храните в одном члене класса, а вы устанавливаете их в другом окне.
С другой стороны, необязательно, чтобы admin_operation наследовал от Index, поэтому удалите его.
import sqlite3
from PyQt5.QtWidgets import QMessageBox, QDialog, QMainWindow, QApplication
from Login_form import Login_form
from Admin_Home_form import AdminHome_Form
class Index(QDialog, Login_form):
def __init__(self):
QDialog.__init__(self)
self.loginFormDesign(self)
self.login_button.clicked.connect(self.login_check)
def login_check(self):
uname = self.U_name_text.text()
password = self.pass_text.text()
connection = sqlite3.connect("taylorDB.db")
result = connection.execute("SELECT USER_FULLNAME FROM USERS WHERE USER_EMAIL = ? AND USER_PASSWORD = ?",
(uname, password)).fetchall()
if result:
self.userfullname = result[0][0]
self.accept()
else:
buttonReply = QMessageBox.question(self, 'Login Invalid', "Check User Name or Password!",
QMessageBox.Close)
if buttonReply == QMessageBox.Close:
print("invalid login")
# self.reject()
class Admin_operation(QMainWindow, AdminHome_Form):
def __init__(self):
QMainWindow.__init__(self)
self.adminHomeFormDesign(self)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
login_object = Index()
admin_object = Admin_operation()
if login_object.exec() == QDialog.Accepted:
admin_object.userFullname.setText(login_object.userfullname)
admin_object.show()
sys.exit(app.exec_())