1、实际效果
登录界面,界面都是用designer布局的,没有用代码去写,里面用到功能是自己写的代码实现的。
注册界面,注册的账号具有唯一性,用户与密码不得为空,两次密码必须一样,密码必须大于6位且包含数字和字母
2、数据库连接
#数据库连接
class MysqlSearch(object):
# 数据库操作功能
def __init__(self):
self.get_conn()
# 获取连接
def get_conn(self):
try:
self.conn = pymysql.connect(host="localhost", user="root", passwd="###", db="zhou")#数据库名称
except pymysql.Error as e:
print('Error: %s' % e)
return None
#关闭连接
def close_conn(self):
try:
if self.conn:
self.conn.close()
except pymysql.Error as e:
print('Error: %s' % e)
return None
登录注册界面代码
class LoginWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_LoginWindow()
self.ui.setupUi(self)
self.setWindowFlag(QtCore.Qt.FramelessWindowHint)#消除周边的框框
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
#设置阴影
#设置跳转
self.ui.pushButton_Login.clicked.connect(lambda :self.ui.stackedWidget_2.setCurrentIndex((0)))#登录界面
self.ui.pushButton_Register.clicked.connect(lambda: self.ui.stackedWidget_2.setCurrentIndex((1)))#注册界面
#确定按钮设置
self.ui.pushButton_Lsure.clicked.connect(self.login_in)
self.ui.pushButton_Rsure.clicked.connect(self.regist_in)
self.show()
# 按钮功能登录
def login_in(self):
account = self.ui.lineEdit_Laccount.text()
password = self.ui.lineEdit_Lpassword.text()
obj = MysqlSearch()#调用数据库连接函数
result = obj.get_userinfo()#获取用户信息函数
ulist = []
plist = []
for item in result:
ulist.append(item['username'])
plist.append(item['passwd'])
for i in range(len(ulist)):
if account == ulist[i] and password == plist[i]:
self.win = interface.MainWindow()
self.close()
break
else:
QMessageBox.information(self, '提示', '用户密码错误')
# if account== "11" and password=="12356":
# self.win = MainWindow();
# self.close()
# else:
# print("出错了")
def regist_in(self):
account = self.ui.lineEdit_Raccount.text()
password0 = self.ui.lineEdit_Rpassword.text()
password1 = self.ui.lineEdit_Rpassword2.text()
if len(account) == 0 or len(password0) == 0 or len(password1) == 0:
QMessageBox.information(self, '提示', '用户与密码不得为空')
elif password0 != password1:
QMessageBox.information(self, '提示', '两次密码不一样')
elif len(password0) < 6 or not re.search(r'\d', password0) or not re.search(r'[a-zA-Z]', password0):
QMessageBox.information(self, '提示', '密码必须大于6位且包含数字和字母')
else:
obj = MysqlSearch()
result = obj.get_userinfo()
username_list = [item['username'] for item in result]
if account in username_list:
QMessageBox.information(self, '提示', '用户名已存在')
else:
conn = pymysql.connect(host="localhost", user="root", passwd="###", db="zhou")
# 获取游标
cursor = conn.cursor()
cursor.execute(f"insert into login (username, passwd) values ('{account}','{password1}')")
conn.commit()
conn.close()
QMessageBox.information(self, '恭喜', '注册成功')