Я просто застрял в первом выпуске. после успешного входа в систему он должен переключиться на главный экран в зависимости от администратора, персонала и посетителя. (эти три имеют разные экраны).
Я просто посмотрел учебник и сделал это. Я могу открыть разные экраны в зависимости от типа пользователя, но поскольку я только что подключился к новому файлу py, он продолжает создавать дополнительный экран над предыдущим. Мне нужно закрыть предыдущую и выложить новую.
это файл входа в систему. Поскольку регистрация, кажется, работает правильно, я не буду прикреплять ее здесь. и у меня есть три файла, это персонал, администратор, посетитель. В качестве примера я приложу только staff.py здесь. если проблемы решаются, я могу справиться с другой функцией переключения экрана. Пожалуйста, помогите мне перейти на экран персонала, когда вошедший в систему пользователь имеет тип персонала.
![enter image description here](https://i.stack.imgur.com/gpBRL.png)
![enter image description here](https://i.stack.imgur.com/6FBZ3.png)
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_())