PyQt5实现登录和注册功能

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, '恭喜', '注册成功')


  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值