首先是数据库,使用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
其中包含了从数据库中去检验输入的账号密码是否存在。
最终的效果:
实现了登录的验证、注册新账号等操作。