【发布时间】:2020-07-26 16:45:32
【问题描述】:
我正在 pyqt5 中创建一个注册和登录 GUI。我使用 Qt Designer 来生成 ui。我在注册表单中使用 QLineEdit 获取用户信息。我如何访问登录窗口中的信息以便用户可以登录。
我的 ui python 文件是:
注册:
class Ui_SignUp(object):
def setupUi(self, SignUp):
SignUp.setObjectName("SignUp")
SignUp.resize(800, 600)
SignUp.setStyleSheet("background-color: rgb(149, 149, 149);")
self.centralwidget = QtWidgets.QWidget(SignUp)
self.centralwidget.setObjectName("centralwidget")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.centralwidget)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setText("")
self.label_2.setPixmap(QtGui.QPixmap("user.png"))
self.label_2.setScaledContents(True)
self.label_2.setObjectName("label_2")
self.verticalLayout_2.addWidget(self.label_2)
self.verticalLayout_3.addLayout(self.verticalLayout_2)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_3.addItem(spacerItem)
self.label_5 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_5.setFont(font)
self.label_5.setObjectName("label_5")
self.verticalLayout_3.addWidget(self.label_5)
self.lineEdit_4 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_4.setObjectName("lineEdit_4")
self.verticalLayout_3.addWidget(self.lineEdit_4)
self.label_4 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_4.setFont(font)
self.label_4.setObjectName("label_4")
self.verticalLayout_3.addWidget(self.label_4)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_3.setObjectName("lineEdit_3")
self.verticalLayout.addWidget(self.lineEdit_3)
self.label = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setUnderline(False)
font.setWeight(75)
font.setStrikeOut(False)
self.label.setFont(font)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout.addWidget(self.lineEdit)
self.label_3 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_3.setFont(font)
self.label_3.setStyleSheet("")
self.label_3.setObjectName("label_3")
self.verticalLayout.addWidget(self.label_3)
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setObjectName("lineEdit_2")
self.verticalLayout.addWidget(self.lineEdit_2)
self.label_7 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_7.setFont(font)
self.label_7.setObjectName("label_7")
self.verticalLayout.addWidget(self.label_7)
self.lineEdit_6 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_6.setObjectName("lineEdit_6")
self.verticalLayout.addWidget(self.lineEdit_6)
self.label_6 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_6.setFont(font)
self.label_6.setObjectName("label_6")
self.verticalLayout.addWidget(self.label_6)
self.lineEdit_5 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_5.setObjectName("lineEdit_5")
self.verticalLayout.addWidget(self.lineEdit_5)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout.addItem(spacerItem1)
self.verticalLayout_3.addLayout(self.verticalLayout)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.pushButton_2.setFont(font)
self.pushButton_2.setStyleSheet("background-color: rgb(255, 255, 255);")
self.pushButton_2.setObjectName("pushButton_2")
self.horizontalLayout.addWidget(self.pushButton_2)
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setStyleSheet("background-color: rgb(255, 255, 255);")
self.pushButton.setObjectName("pushButton")
self.horizontalLayout.addWidget(self.pushButton)
self.verticalLayout_3.addLayout(self.horizontalLayout)
self.horizontalLayout_2.addLayout(self.verticalLayout_3)
SignUp.setCentralWidget(self.centralwidget)
self.retranslateUi(SignUp)
QtCore.QMetaObject.connectSlotsByName(SignUp)
def retranslateUi(self, SignUp):
_translate = QtCore.QCoreApplication.translate
SignUp.setWindowTitle(_translate("SignUp", "MainWindow"))
self.label_5.setText(_translate("SignUp", "First Name:"))
self.lineEdit_4.setPlaceholderText(_translate("SignUp", "Please enter your first name"))
self.label_4.setText(_translate("SignUp", "Last Name:"))
self.lineEdit_3.setPlaceholderText(_translate("SignUp", "Please enter your last name"))
self.label.setText(_translate("SignUp", "Username:"))
self.lineEdit.setPlaceholderText(_translate("SignUp", "Please choose your Username"))
self.label_3.setText(_translate("SignUp", "Password (must be between 6-20 characters. must include letters and numbers)"))
self.lineEdit_2.setPlaceholderText(_translate("SignUp", "Please choose your Password"))
self.label_7.setText(_translate("SignUp", "Retype Password"))
self.lineEdit_6.setPlaceholderText(_translate("SignUp", "Please retype your password"))
self.label_6.setText(_translate("SignUp", "Email:"))
self.lineEdit_5.setPlaceholderText(_translate("SignUp", "Please enter your email address"))
self.pushButton_2.setText(_translate("SignUp", "Go to Login"))
self.pushButton.setText(_translate("SignUp", "Sign Up"))
登录:
class Ui_Welcome(object):
def setupUi(self, Welcome):
Welcome.setObjectName("Welcome")
Welcome.resize(800, 600)
Welcome.setStyleSheet("background-color: rgb(149, 149, 149);")
self.centralwidget = QtWidgets.QWidget(Welcome)
self.centralwidget.setObjectName("centralwidget")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.centralwidget)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setText("")
self.label_2.setPixmap(QtGui.QPixmap("logo.png"))
self.label_2.setScaledContents(True)
self.label_2.setObjectName("label_2")
self.verticalLayout_2.addWidget(self.label_2)
self.verticalLayout_3.addLayout(self.verticalLayout_2)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout.addItem(spacerItem)
self.label = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setUnderline(False)
font.setWeight(75)
font.setStrikeOut(False)
self.label.setFont(font)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout.addWidget(self.lineEdit)
self.label_3 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_3.setFont(font)
self.label_3.setStyleSheet("")
self.label_3.setObjectName("label_3")
self.verticalLayout.addWidget(self.label_3)
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setObjectName("lineEdit_2")
self.verticalLayout.addWidget(self.lineEdit_2)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout.addItem(spacerItem1)
self.verticalLayout_3.addLayout(self.verticalLayout)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.pushButton_2.setFont(font)
self.pushButton_2.setStyleSheet("background-color: rgb(255, 255, 255);")
self.pushButton_2.setObjectName("pushButton_2")
self.horizontalLayout.addWidget(self.pushButton_2)
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setStyleSheet("background-color: rgb(255, 255, 255);")
self.pushButton.setObjectName("pushButton")
self.horizontalLayout.addWidget(self.pushButton)
self.verticalLayout_3.addLayout(self.horizontalLayout)
self.horizontalLayout_2.addLayout(self.verticalLayout_3)
Welcome.setCentralWidget(self.centralwidget)
self.retranslateUi(Welcome)
QtCore.QMetaObject.connectSlotsByName(Welcome)
def retranslateUi(self, Welcome):
_translate = QtCore.QCoreApplication.translate
Welcome.setWindowTitle(_translate("Welcome", "MainWindow"))
self.label.setText(_translate("Welcome", "Username:"))
self.lineEdit.setPlaceholderText(_translate("Welcome", "Please enter your Username"))
self.label_3.setText(_translate("Welcome", "Password:"))
self.lineEdit_2.setPlaceholderText(_translate("Welcome", "Please enter your Password"))
self.pushButton_2.setText(_translate("Welcome", "Go to Sign Up"))
self.pushButton.setText(_translate("Welcome", "Login"))
目前我将值存储为 csv 并稍后访问它们。但为此我必须重新启动我的应用程序。
class SignUp(QtWidgets.QMainWindow, Ui_SignUp):
def __init__(self):
super(SignUp,self).__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.createUser)
def changeWin(self):
self.newW = QtWidgets.QMainWindow()
self.ui = Ui_LogIn()
self.ui.setupUi(self.newW)
self.newW.show()
self.hide()
def createUser(self):
if self.lineEdit_2.text() == self.lineEdit_6.text():
values = [self.lineEdit.text(), self.lineEdit_2.text(),
self.lineEdit_6.text(), self.lineEdit_5.text()]
df = pd.DataFrame()
df["user_info"] = values
df.to_csv("user_info.csv", index = False)
self.changeWin()
else:
msg = QMessageBox.warning(None, "Error", "passwords do not match" )
class LogIn(QtWidgets.QMainWindow, Ui_Welcome):
def __init__(self):
super(LogIn,self).__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.HandleLogin)
def HandleLogin(self):
UName = self.lineEdit.text()
UPass = self.lineEdit_2.text()
if self.Validate(UName, UPass):
self.changeWin()
else:
QMessageBox.warning(self, 'Error', 'Bad user or password')
def Validate(self, UName, UPass):
RetVal = False
df1 = pd.read_csv("user_info.csv")
UN = df1["user_info"][0]
UP = df1["user_info"][1]
if (UName == UN and UPass == UP):
RetVal = True
return RetVal
def SwitchWindow(w1, w2):
w1.hide()
w2.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
loginW = LogIn()
signupW = SignUp()
loginW.pushButton_2.clicked.connect(lambda: SwitchWindow(loginW, signupW))
signupW.pushButton_2.clicked.connect(lambda: SwitchWindow(signupW, loginW))
loginW.show()
sys.exit(app.exec_())
有没有一种方法可以让我第一次访问从注册到登录的输入值,而无需重新启动我的应用程序?因为从第二次我可以从 csv 访问它们。
【问题讨论】:
标签: python python-3.x pyqt pyqt5