显示效果:

代码段: LoginWin.py
需要注意 构造函数需要父类作为参数 因此该界面需要从父界面进入
# 所有界面的父亲:QWidget
from PyQt5.QtGui import QIcon, QPalette, QBrush, QPixmap
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QPushButton, QLineEdit, QMessageBox
import sys
from AIFaceDetect import AI_facedetect
from CarWin import CarWin
from DealWin import DealPic
from data import userList
"""
放在data.py中import进来
# 字典 {key:value}
userList = [
{"name": "xly", "pwd":"123456"},
{"name":"jack","pwd":"123456"},
{"name":"jcy","pwd":"123456"},
]
user1 = {"name": "xly", "pwd": "123456"}
user2 = {"name":"jack","pwd":"123456"}
user3={"name":"jcy","pwd":"123456"}
"""
class loginWidget(QWidget):
def __init__(self,parent):
# 构造函数
super().__init__() #调用父类的构造函数
self.parent=parent #parent存的是 MainWin
# 创建需要的标签
self.setWindowTitle("车牌识别") # 设置标题
self.resize(630, 480) # 固定尺寸
# 设置左上角的Logo
self.setWindowIcon(QIcon("./img/comic.png"))
# 设置背景
palatte = QPalette()
palatte.setBrush(self.backgroundRole(), QBrush(QPixmap("./img/background.jpg")))
self.setPalette(palatte)
self.labName = QLabel("用户名:", self)
self.labName.setStyleSheet("color:white")
self.labName.setGeometry(120, 200, 60, 30)
self.labpwd = QLabel("密码:", self)
self.labpwd.setStyleSheet("color:white")
self.labpwd.setGeometry(120, 240, 60, 30)
self.editName = QLineEdit(self)
self.editName.setGeometry(200, 200, 150, 30)
# 设置输入的长度
self.editName.setMaxLength(8)
self.editpwd = QLineEdit(self)
self.editpwd.setGeometry(200, 240, 150, 30)
# 设置密文
self.editpwd.setEchoMode(QLineEdit.Password)
self.logbtn = QPushButton("登录", self)
self.logbtn.setGeometry(120, 300, 100, 30)
self.exitbtn = QPushButton("退出", self)
self.exitbtn.setGeometry(230, 300, 100, 30)
# 点击登录时, 验证一下用户名和密码是否满足
# qt的核心--信号和槽
self.logbtn.clicked.connect(self.logincheck)
self.exitbtn.clicked.connect(self.closeWindow)
# 登录验证
def logincheck(self):
# .text()获取EditLine的内容
print(self.editName.text()) # 打印当前的用户名
print(self.editpwd.text()) # 打印当前的密码
for i in userList: #表示的是userlist每个用户名和密码
print(i["name"],i["pwd"])#如何获取字典中的数据 [key]获取到的是value
if self.editName.text() == i["name"] and self.editpwd.text() == i["pwd"]:
print("登录成功")
QMessageBox.about(self, "提示框", "登录成功!")
self.close() # 或者用self.hide()隐藏掉
# 显示登录界面
self.dealWin = CarWin()
self.dealWin.show()
break #登录成功就结束
else: #注意这个else是和for循环组成的
"""
如果for循环是正常执行完的话都会执行else
如果for循环是通过break跳出的 那后面的else就不会执行了
"""
QMessageBox.about(self, "提示框", "该用户不存在!")
def closeWindow(self):
self.close() # 或者用self.hide()隐藏掉
self.parent.show()
#
if __name__ == '__main__':
app = QApplication(sys.argv) # 应用程序
login = loginWidget() # 创建一个登陆窗口
login.show() # 显示窗口
sys.exit(app.exec_()) # 保持窗口

这篇博客展示了如何使用PyQt5构建一个登录界面,并实现用户验证功能。登录窗口包含用户名和密码输入框,以及登录和退出按钮。当用户点击登录按钮时,程序会遍历预定义的用户列表进行匹配,如果用户名和密码正确,显示“登录成功”提示并打开新的窗口;否则,显示“该用户不存在”提示。
395

被折叠的 条评论
为什么被折叠?



