PyQT+SQlite实现登录验证界面

首先是数据库,使用SQlite3,管理工具使用Navicat

在Navicat新建一个连接,并且数据库文件xx.db放在软件项目里。

 命名好自己的数据库名,会在后续使用。

在这个连接里建立数据表格,我的表格包括了账号,密码,权限号

 

完毕后在表格里填充数据即可。

然后通过QT-designer自行设计前端登录界面,下面是我的效果图:

登录

 注册

黑色背景可以换为系统相关的图片。

ui前端代码如下:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_loginWindow(object):
    def setupUi(self, loginWindow):
        loginWindow.setObjectName("loginWindow")
        loginWindow.resize(1158, 570)
        self.centralwidget = QtWidgets.QWidget(loginWindow)
        self.centralwidget.setMinimumSize(QtCore.QSize(0, 0))
        self.centralwidget.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.centralwidget.setObjectName("centralwidget")
        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(0, 20, 1021, 561))
        self.frame.setStyleSheet("#frame {\n"
"    color: white;  /* 设置字体颜色为白色 */\n"
"    background-color: black;\n"
"    background-repeat: no-repeat;\n"
"    background-position: center;\n"
"}\n"
"")
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.frame)
        self.verticalLayout_8.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_8.setSpacing(0)
        self.verticalLayout_8.setObjectName("verticalLayout_8")
        self.frame_3 = QtWidgets.QFrame(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(self.frame_3.sizePolicy().hasHeightForWidth())
        self.frame_3.setSizePolicy(sizePolicy)
        self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_3.setObjectName("frame_3")
        self.pushButton = QtWidgets.QPushButton(self.frame_3)
        self.pushButton.setGeometry(QtCore.QRect(990, 0, 31, 23))
        self.pushButton.setStyleSheet("background-color: transparent;")
        self.pushButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/icons/close.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pushButton.setIcon(icon)
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.frame_3)
        self.pushButton_2.setGeometry(QtCore.QRect(960, 0, 31, 23))
        self.pushButton_2.setStyleSheet("background-color: transparent;")
        self.pushButton_2.setText("")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/icons/small.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pushButton_2.setIcon(icon1)
        self.pushButton_2.setObjectName("pushButton_2")
        self.verticalLayout_8.addWidget(self.frame_3)
        self.frame_8 = QtWidgets.QFrame(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(self.frame_8.sizePolicy().hasHeightForWidth())
        self.frame_8.setSizePolicy(sizePolicy)
        self.frame_8.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_8.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_8.setObjectName("frame_8")
        self.label = QtWidgets.QLabel(self.frame_8)
        self.label.setGeometry(QtCore.QRect(50, 0, 721, 51))
        self.label.setStyleSheet("QLabel {\n"
"    color: white;  /* 设置字体颜色为白色 */\n"
"    font: 16pt \"黑体\";  /* 设置字体样式 */\n"
"    font-weight: bold;  /* 将字体加粗 */\n"
"}\n"
"")
        self.label.setObjectName("label")
        self.verticalLayout_8.addWidget(self.frame_8)
        self.frame_10 = QtWidgets.QFrame(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(5)
        sizePolicy.setHeightForWidth(self.frame_10.sizePolicy().hasHeightForWidth())
        self.frame_10.setSizePolicy(sizePolicy)
        self.frame_10.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_10.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_10.setObjectName("frame_10")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.frame_10)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.frame_12 = QtWidgets.QFrame(self.frame_10)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(3)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.frame_12.sizePolicy().hasHeightForWidth())
        self.frame_12.setSizePolicy(sizePolicy)
        self.frame_12.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_12.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_12.setObjectName("frame_12")
        self.frame_9 = QtWidgets.QFrame(self.frame_12)
        self.frame_9.setGeometry(QtCore.QRect(430, 10, 211, 221))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.frame_9.sizePolicy().hasHeightForWidth())
        self.frame_9.setSizePolicy(sizePolicy)
        self.frame_9.setStyleSheet("background-color: transparent;")
        self.frame_9.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_9.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_9.setObjectName("frame_9")
        self.frame_2 = QtWidgets.QFrame(self.frame_12)
        self.frame_2.setGeometry(QtCore.QRect(590, 20, 241, 240))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(4)
        sizePolicy.setHeightForWidth(self.frame_2.sizePolicy().hasHeightForWidth())
        self.frame_2.setSizePolicy(sizePolicy)
        self.frame_2.setStyleSheet("#frame_2{\n"
"    background-color: transparent;\n"
"    border-radius: 10px;\n"
"}")
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_2.setLineWidth(1)
        self.frame_2.setObjectName("frame_2")
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.frame_2)
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.fram_3 = QtWidgets.QFrame(self.frame_2)
        self.fram_3.setMinimumSize(QtCore.QSize(0, 0))
        self.fram_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.fram_3.setFrameShadow(QtWidgets.QFrame.Raised)
        self.fram_3.setObjectName("fram_3")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.fram_3)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.frame_5 = QtWidgets.QFrame(self.fram_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(8)
        sizePolicy.setHeightForWidth(self.frame_5.sizePolicy().hasHeightForWidth())
        self.frame_5.setSizePolicy(sizePolicy)
        self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_5.setObjectName("frame_5")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.frame_5)
        self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_3.setSpacing(0)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.frame_6 = QtWidgets.QFrame(self.frame_5)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(6)
        sizePolicy.setHeightForWidth(self.frame_6.sizePolicy().hasHeightForWidth())
        self.frame_6.setSizePolicy(sizePolicy)
        self.frame_6.setStyleSheet("QLineEdit{\n"
"background-color: rgba(255, 255, 255,0);\n"
"border:none;\n"
"border-bottom:1px solid black;\n"
"}\n"
"\n"
"QPushButton{\n"
"background-color: rgb(0, 0, 0);\n"
"color: rgb(255, 255, 255);\n"
"border-radius:7px;\n"
"}\n"
"QPushButton:pressed{\n"
"padding-top:5px;\n"
"padding-right:5px;\n"
"}\n"
"")
        self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_6.setObjectName("frame_6")
        self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.frame_6)
        self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_4.setSpacing(0)
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.stackedWidget_login = QtWidgets.QStackedWidget(self.frame_6)
        self.stackedWidget_login.setStyleSheet("color: transparent;\n"
"background-color:transparent;")
        self.stackedWidget_login.setObjectName("stackedWidget_login")
        self.page_login = QtWidgets.QWidget()
        self.page_login.setObjectName("page_login")
        self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.page_login)
        self.verticalLayout_6.setSpacing(5)
        self.verticalLayout_6.setObjectName("verticalLayout_6")
        self.lineEdit_r_account = QtWidgets.QLineEdit(self.page_login)
        self.lineEdit_r_account.setStyleSheet("color: rgb(63, 63, 63);\n"
"background-color: rgb(255, 255, 255);")
        self.lineEdit_r_account.setObjectName("lineEdit_r_account")
        self.verticalLayout_6.addWidget(self.lineEdit_r_account)
        self.lineEdit_r_pwd = QtWidgets.QLineEdit(self.page_login)
        self.lineEdit_r_pwd.setStyleSheet("color: rgb(63, 63, 63);\n"
"background-color: rgb(255, 255, 255);")
        self.lineEdit_r_pwd.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit_r_pwd.setObjectName("lineEdit_r_pwd")
        self.verticalLayout_6.addWidget(self.lineEdit_r_pwd)
        self.lineEdit_r_pwd2 = QtWidgets.QLineEdit(self.page_login)
        self.lineEdit_r_pwd2.setStyleSheet("color: rgb(63, 63, 63);\n"
"background-color: rgb(255, 255, 255);")
        self.lineEdit_r_pwd2.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit_r_pwd2.setObjectName("lineEdit_r_pwd2")
        self.verticalLayout_6.addWidget(self.lineEdit_r_pwd2)
        self.pushButton_r_register = QtWidgets.QPushButton(self.page_login)
        self.pushButton_r_register.setMinimumSize(QtCore.QSize(0, 30))
        self.pushButton_r_register.setStyleSheet("color: rgb(63, 63, 63);\n"
"background-color: rgb(255, 255, 255);")
        self.pushButton_r_register.setObjectName("pushButton_r_register")
        self.verticalLayout_6.addWidget(self.pushButton_r_register)
        self.stackedWidget_login.addWidget(self.page_login)
        self.page_register = QtWidgets.QWidget()
        self.page_register.setObjectName("page_register")
        self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.page_register)
        self.verticalLayout_5.setSpacing(15)
        self.verticalLayout_5.setObjectName("verticalLayout_5")
        self.lineEdit_account = QtWidgets.QLineEdit(self.page_register)
        self.lineEdit_account.setMinimumSize(QtCore.QSize(0, 28))
        self.lineEdit_account.setStyleSheet("color: rgb(63, 63, 63);\n"
"background-color: rgb(255, 255, 255);")
        self.lineEdit_account.setObjectName("lineEdit_account")
        self.verticalLayout_5.addWidget(self.lineEdit_account)
        self.lineEdit_pwd = QtWidgets.QLineEdit(self.page_register)
        self.lineEdit_pwd.setMinimumSize(QtCore.QSize(0, 28))
        self.lineEdit_pwd.setStyleSheet("color: rgb(63, 63, 63);\n"
"background-color: rgb(255, 255, 255);")
        self.lineEdit_pwd.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit_pwd.setObjectName("lineEdit_pwd")
        self.verticalLayout_5.addWidget(self.lineEdit_pwd)
        self.pushButton_sure = QtWidgets.QPushButton(self.page_register)
        self.pushButton_sure.setMinimumSize(QtCore.QSize(0, 30))
        self.pushButton_sure.setStyleSheet("color: rgb(255, 255, 255);\n"
"background-color: rgb(0, 0, 0);")
        self.pushButton_sure.setObjectName("pushButton_sure")
        self.verticalLayout_5.addWidget(self.pushButton_sure)
        self.stackedWidget_login.addWidget(self.page_register)
        self.verticalLayout_4.addWidget(self.stackedWidget_login)
        self.verticalLayout_3.addWidget(self.frame_6)
        self.frame_7 = QtWidgets.QFrame(self.frame_5)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(self.frame_7.sizePolicy().hasHeightForWidth())
        self.frame_7.setSizePolicy(sizePolicy)
        self.frame_7.setStyleSheet("QPushButton{\n"
"border:none;\n"
"}\n"
"QPushButton:pressed{\n"
"padding-top:5px;\n"
"padding-left:5px;\n"
"}")
        self.frame_7.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_7.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_7.setObjectName("frame_7")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame_7)
        self.horizontalLayout.setSpacing(20)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton_login = QtWidgets.QPushButton(self.frame_7)
        self.pushButton_login.setStyleSheet("color: rgb(0, 0, 0);\n"
"background-color: rgb(0, 255, 255);")
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/icons/login.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pushButton_login.setIcon(icon2)
        self.pushButton_login.setObjectName("pushButton_login")
        self.horizontalLayout.addWidget(self.pushButton_login)
        self.pushButton_register = QtWidgets.QPushButton(self.frame_7)
        self.pushButton_register.setStyleSheet("color: rgb(0, 0, 0);\n"
"background-color: rgb(85, 255, 255);")
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/icons/register.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pushButton_register.setIcon(icon3)
        self.pushButton_register.setObjectName("pushButton_register")
        self.horizontalLayout.addWidget(self.pushButton_register)
        self.verticalLayout_3.addWidget(self.frame_7)
        self.verticalLayout.addWidget(self.frame_5)
        self.frame_4 = QtWidgets.QFrame(self.fram_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(self.frame_4.sizePolicy().hasHeightForWidth())
        self.frame_4.setSizePolicy(sizePolicy)
        self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_4.setObjectName("frame_4")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.frame_4)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setSpacing(0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.stackedWidget_message = QtWidgets.QStackedWidget(self.frame_4)
        self.stackedWidget_message.setStyleSheet("background-color: transparent;")
        self.stackedWidget_message.setObjectName("stackedWidget_message")
        self.page = QtWidgets.QWidget()
        self.page.setObjectName("page")
        self.stackedWidget_message.addWidget(self.page)
        self.page_2 = QtWidgets.QWidget()
        self.page_2.setObjectName("page_2")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.page_2)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_message = QtWidgets.QLabel(self.page_2)
        self.label_message.setStyleSheet("font: 25 9pt \"等线 Light\";")
        self.label_message.setText("")
        self.label_message.setObjectName("label_message")
        self.horizontalLayout_2.addWidget(self.label_message)
        self.stackedWidget_message.addWidget(self.page_2)
        self.verticalLayout_2.addWidget(self.stackedWidget_message)
        self.verticalLayout.addWidget(self.frame_4)
        self.horizontalLayout_4.addWidget(self.fram_3)
        self.horizontalLayout_3.addWidget(self.frame_12)
        self.verticalLayout_8.addWidget(self.frame_10)
        self.frame_11 = QtWidgets.QFrame(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(self.frame_11.sizePolicy().hasHeightForWidth())
        self.frame_11.setSizePolicy(sizePolicy)
        self.frame_11.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_11.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_11.setObjectName("frame_11")
        self.label_2 = QtWidgets.QLabel(self.frame_11)
        self.label_2.setGeometry(QtCore.QRect(890, 10, 121, 41))
        self.label_2.setText("")
        self.label_2.setPixmap(QtGui.QPixmap(":/icons/sflag2.png"))
        self.label_2.setScaledContents(True)
        self.label_2.setObjectName("label_2")
        self.verticalLayout_8.addWidget(self.frame_11)
        loginWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(loginWindow)
        self.stackedWidget_login.setCurrentIndex(0)
        self.stackedWidget_message.setCurrentIndex(1)
        self.pushButton.clicked.connect(loginWindow.close) # type: ignore
        self.pushButton_2.clicked.connect(loginWindow.showMinimized) # type: ignore
        QtCore.QMetaObject.connectSlotsByName(loginWindow)

    def retranslateUi(self, loginWindow):
        _translate = QtCore.QCoreApplication.translate
        loginWindow.setWindowTitle(_translate("loginWindow", "登录窗口"))
        self.label.setText(_translate("loginWindow", "      系统登录"))
        self.lineEdit_r_account.setPlaceholderText(_translate("loginWindow", "请输入账号:"))
        self.lineEdit_r_pwd.setPlaceholderText(_translate("loginWindow", "请输入密码:"))
        self.lineEdit_r_pwd2.setPlaceholderText(_translate("loginWindow", "确认密码:"))
        self.pushButton_r_register.setText(_translate("loginWindow", "注册"))
        self.lineEdit_account.setPlaceholderText(_translate("loginWindow", "请输入账号:"))
        self.lineEdit_pwd.setPlaceholderText(_translate("loginWindow", "请输入密码:"))
        self.pushButton_sure.setText(_translate("loginWindow", "确认登录"))
        self.pushButton_login.setText(_translate("loginWindow", "登录"))
        self.pushButton_register.setText(_translate("loginWindow", "注册"))
import res_rc

然后编写主函数,实现登录逻辑:

from PyQt5.QtCore import QTimer, QThread, pyqtSignal
from PyQt5.QtGui import QImage, QPixmap
from keras.models import load_model
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.pyplot as plt
import socket
ACCOUNT = 'none'   #账号全局变量
Permission ='2' #权限级别
# 登录类
class LoginWindow(QMainWindow,Ui_loginWindow):
    def __init__(self):
        super().__init__()
        # 继承外部ui
        self.setupUi(self)
        # 隐藏外部多余窗口 他们要一起写上
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        # 主窗体阴影
        self.shadow = QtWidgets.QGraphicsDropShadowEffect(self)
        self.shadow.setOffset(0,0)
        self.shadow.setBlurRadius(15)
        self.shadow.setColor(QtCore.Qt.blue)
#        self.frame_1.setGraphicsEffect(self.shadow)
        self.frame_2.setGraphicsEffect(self.shadow)
        # 主按钮绑定事件
        self.stackedWidget_login.setCurrentIndex(1)
        self.pushButton_login.clicked.connect(lambda :self.stackedWidget_login.setCurrentIndex(1))
        self.pushButton_register.clicked.connect(lambda :self.stackedWidget_login.setCurrentIndex(0))
        self.pushButton_sure.clicked.connect(self.verify_login)
        self.pushButton_r_register.clicked.connect(self.register_submit)

    def register_submit(self):
        account = self.lineEdit_r_account.text()
        pwd1 = self.lineEdit_r_pwd.text()
        pwd2 = self.lineEdit_r_pwd2.text()
        if pwd1 != pwd2:
            self.label_message.setStyleSheet("color: red")
            self.label_message.setText('两次输入的密码不一致')
            return
        # 连接 SQLite 数据库
        try:
            conn = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'fasteners.db'))
            cursor = conn.cursor()
            # 查询数据库中是否已经存在相同账号
            cursor.execute("SELECT * FROM user WHERE account = ?", (account,))
            existing_user = cursor.fetchone()
            if existing_user:
                self.label_message.setStyleSheet("color: red")
                self.label_message.setText('该账户已存在')
            else:
                # 插入新账号和密码到user表
                cursor.execute("INSERT INTO user (account, password,pmno) VALUES (?, ?)", (account, pwd1))
                conn.commit()
                self.label_message.setText('注册成功')
            conn.close()
        except sqlite3.Error as e:
            print("SQLite 错误发生: ", e)
        # 自定义内部ui
        self.setup_ui()
    def verify_login(self):
        global ACCOUNT,Permission  # 声明全局变量
        account = self.lineEdit_account.text()
        ACCOUNT = account
        pwd = self.lineEdit_pwd.text()
        # 连接 SQLite 数据库
        try:
            conn = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'fasteners.db'))
            cursor = conn.cursor()
            # 打印连接状态
            if conn:
                print("成功连接到数据库")
            else:
                print("连接数据库失败")
            # 查询数据库中是否存在匹配的账号和密码
            cursor.execute("SELECT * FROM user WHERE account = ? AND password = ?", (account, pwd))
            result = cursor.fetchone()
            if result:
                print('登录成功')
                # 获取账号对应的pmno属性值
                cursor.execute("SELECT pmno FROM user WHERE account = ?", (account,))
                pmno_result = cursor.fetchone()
                if pmno_result:
                    Permission = pmno_result[0]
                    print('Permission:', Permission)
                else:
                    print('无法获取权限信息')
                try:
                    self.main = MainWindow()
                    self.main.showMaximized()  # 设置 MainWindow 最大化显示
                    self.close()
                except Exception as e:
                    print(e)
            else:
                self.label_message.setStyleSheet("color: red")
                self.label_message.setText('账号或密码错误')
                return
            conn.close()
        except sqlite3.Error as e:
            print("SQLite 错误发生: ", e)
    def setup_ui(self):
        pass

其中包含了从数据库中去检验输入的账号密码是否存在。

最终的效果:
 

实现了登录的验证、注册新账号等操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值