显示效果:
代码段: 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_()) # 保持窗口