I am just stuck in first issue. after successful log-in, then it should switched into main screen depending on admin, staff, and visitor. (these three have different screen).
I just see some tutorial and made this. i am able to pop up different screens depending on usertype, but since i just connected to the new py file, it keeps make additional screen above previous one. I need to close previous one and pop new one.
this is the login file. since signup seems work correctly, i will not attach it here. and i have three files that is staff, admin, visitor. as an example, i will attach only staff.py here. if issues solve, I can handle other switch screen function. please help me to change into staff screen when logged user has 'staff' usertype.


login.py
import pymysql
from PyQt5 import QtCore, QtGui, QtWidgets
from sign import Ui_SignUp
from admin import Ui_adminWindow
from visitor import Ui_visitorWindow
from staff import Ui_staffWindow
class Ui_loginWindow(object):
def changeToAdminScreen(self):
self.adminWindow = QtWidgets.QMainWindow()
self.ui = Ui_adminMainWindow();
self.ui.setupUi(self.adminWindow)
self.adminWindow.show()
self.close()
def changeToVisitorScreen(self):
self.visitorWindow = QtWidgets.QMainWindow()
self.ui = Ui_visitorMainWindow();
self.ui.setupUi(self.visitorWindow)
self.visitorWindow.show()
def changeToStaffScreen(self):
self.staffWindow = QtWidgets.QMainWindow()
self.ui = Ui_staffWindow();
self.ui.setupUi(self.staffWindow)
# self.connect(self.staffWindow)
self.staffWindow.show()
def changeToSignUpScreen(self):
self.signUpWindow = QtWidgets.QDialog()
self.ui = Ui_SignUp();
self.ui.setupUi(self.signUpWindow)
self.signUpWindow.show()
def successWindowShow(self, usertype):
if(usertype == 'staff'):
self.changeToStaffScreen()
if (usertype == 'admin'):
self.changeToAdminScreen()
if(usertype == 'visitor'):
self.changeToVisitorScreen()
def failedMessage(self, title, message):
msgBox = QtWidgets.QMessageBox()
msgBox.setIcon(QtWidgets.QMessageBox.Warning)
msgBox.setWindowTitle(title)
msgBox.setText(message)
msgBox.setStandardButtons(QtWidgets.QMessageBox.Ok)
msgBox.exec_()
def loginCheck(self):
email = self.log_email_line.text()
password = self.log_pass_line.text()
connection = pymysql.connect(host ='127.0.0.1', port = 3306, user = 'root',password='mr1035122')
cursor = connection.cursor()
cursor.execute("SELECT * FROM ZOO.USER AS USER WHERE USER.Email = %s AND User.Password = %s", (email, password))
result = cursor.fetchall()
if(len(result) > 0):
print("login success! Welcome to the atlanta zoo")
cursor.execute("SELECT UserType From zoo.User")
self.successWindowShow(cursor.fetchone()[0])
else:
print("incorrect email or password. Please check whether you entered correctly. or if you are new user, please sign up")
msg ="incorrect email or password. Please check whether you entered correctly. or if you are new user, please sign up"
self.failedMessage("failed login", msg)
connection.close()
def signUpCheck(self):
self.changeToSignUpScreen()
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("background:rgb(237, 212, 0)")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 1, 0, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem1, 6, 2, 1, 1)
self.log_email_line = QtWidgets.QLineEdit(self.centralwidget)
self.log_email_line.setStyleSheet("background:rgb(238, 238, 236)")
self.log_email_line.setObjectName("log_email_line")
self.gridLayout.addWidget(self.log_email_line, 2, 2, 1, 1)
self.login_button = QtWidgets.QPushButton(self.centralwidget)
self.login_button.setStyleSheet("background:rgb(186, 189, 182)")
self.login_button.setObjectName("login_button")
#######################login_button event########################
self.login_button.clicked.connect(self.loginCheck)
#################################################################
self.gridLayout.addWidget(self.login_button, 4, 2, 1, 1)
self.email_label = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(13)
font.setBold(True)
font.setWeight(75)
self.email_label.setFont(font)
self.email_label.setAlignment(QtCore.Qt.AlignCenter)
self.email_label.setObjectName("email_label")
self.gridLayout.addWidget(self.email_label, 2, 1, 1, 1)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem2, 0, 2, 1, 1)
self.log_pass_line = QtWidgets.QLineEdit(self.centralwidget)
self.log_pass_line.setStyleSheet("background:rgb(238, 238, 236)")
self.log_pass_line.setObjectName("log_pass_line")
self.gridLayout.addWidget(self.log_pass_line, 3, 2, 1, 1)
self.password_label = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(13)
font.setBold(True)
font.setWeight(75)
self.password_label.setFont(font)
self.password_label.setAlignment(QtCore.Qt.AlignCenter)
self.password_label.setObjectName("password_label")
self.gridLayout.addWidget(self.password_label, 3, 1, 1, 1)
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem3, 1, 3, 1, 1)
self.signup_button = QtWidgets.QPushButton(self.centralwidget)
self.signup_button.setStyleSheet("background:rgb(186, 189, 182)")
self.signup_button.setObjectName("signup_button")
#######################signup_button event########################
self.signup_button.clicked.connect(self.signUpCheck)
################################################################
self.gridLayout.addWidget(self.signup_button, 5, 2, 1, 1)
self.title_label = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(16)
self.title_label.setFont(font)
self.title_label.setAlignment(QtCore.Qt.AlignCenter)
self.title_label.setObjectName("title_label")
self.gridLayout.addWidget(self.title_label, 1, 1, 1, 2)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
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.login_button.setText(_translate("MainWindow", "Login"))
self.email_label.setText(_translate("MainWindow", "Email"))
self.password_label.setText(_translate("MainWindow", "password"))
self.signup_button.setText(_translate("MainWindow", "Sign Up"))
self.title_label.setText(_translate("MainWindow", "Welcome to Atlanta Zoo"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_loginWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
staff.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_staffWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("background:rgb(237, 212, 0)")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.logOut = QtWidgets.QPushButton(self.centralwidget)
self.logOut.setStyleSheet("background:rgb(186, 189, 182)")
self.logOut.setObjectName("logOut")
self.gridLayout.addWidget(self.logOut, 4, 1, 1, 1)
self.searchAnimals = QtWidgets.QPushButton(self.centralwidget)
self.searchAnimals.setStyleSheet("background:rgb(186, 189, 182)")
self.searchAnimals.setObjectName("searchAnimals")
self.gridLayout.addWidget(self.searchAnimals, 2, 1, 1, 1)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem, 0, 1, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem1, 4, 2, 1, 1)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem2, 4, 0, 1, 1)
self.viewShowsHistory = QtWidgets.QPushButton(self.centralwidget)
self.viewShowsHistory.setStyleSheet("background:rgb(186, 189, 182)")
self.viewShowsHistory.setObjectName("viewShowsHistory")
self.gridLayout.addWidget(self.viewShowsHistory, 3, 1, 1, 1)
self.title_label_2 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(16)
self.title_label_2.setFont(font)
self.title_label_2.setAlignment(QtCore.Qt.AlignCenter)
self.title_label_2.setObjectName("title_label_2")
self.gridLayout.addWidget(self.title_label_2, 1, 1, 1, 1)
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem3, 5, 1, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
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.logOut.setText(_translate("MainWindow", "Log out"))
self.searchAnimals.setText(_translate("MainWindow", "Search for Animals"))
self.viewShowsHistory.setText(_translate("MainWindow", "View Shows"))
self.title_label_2.setText(_translate("MainWindow", "Welcome to Atlanta Zoo"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_staffWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())