【无标题】python用户登录,注册,且使用图形界面 进行登录

  本文章自创,含有用户登录,注册,且包含图形界面,大家可以把图形界面这部分当成模板进行学习,大家互相学习,有不对的在评论区指出,谢谢大家。       记得点个关注,谢谢你。
# 登录和注册功能的合并

# 专门定义数据变量,存放已经注册的用户信息
import PySimpleGUI as sg
userlist = [] # 存放所有的用户名
pwdlist = [] # 存放所有的用户密码
blacklist = [] # 存放所有的黑名单用户

#存文件  将文件写入列表 在进行判断

# 读取所有数据的方法
"""def readallusers():
    # 读取所有的注册信息 使用a+模式打开文件,在调整指针位置,防止文件不存在时报错
    with open('./user.txt','w+') as fp:
        fp.seek(0) # 调整当前的的指针位置到文件头部
        res = fp.readlines()  # 按照每一行读取所有的用户数据
        for i in res:  # 循环读取的每一行数据
            r = i.strip()  # 处理每一个换行 admin:123\n ==> admin:123
            arr = r.split(':')  # admin:123 ==> ['admin','123']
            userlist.append(arr[0]) # 把用户名追加到 用户名列表中
            pwdlist.append(arr[1])  # 把用户对应的密码 追加到 用户密码 列表中

    # 获取黑名单数据
    with open('./black.txt','w+',encoding='utf-8') as fp:
        fp.seek(0)
        res = fp.readlines()
        for i in res:
            blacklist.append(i.strip())
"""
def panduan():
    danger = ["傻", "蠢", "笨", "呆", "愚"]#判断是否含有敏感词,可以修改
    username = input('欢迎注册,请输入用户名:')
    usernames = list(username)#将字符串变为单个字符
    k=1
    while k:
        for i in usernames:
            if i in danger:
                print("重新输入用户名,含有关键字")
                k=0
                break
            else:
                print("名称合理")
# 封装一个函数 完成注册功能
def register():

    layout = [
        [sg.Text('请输入您的信息')],
        [sg.Text('账号'), sg.InputText()],
        [sg.Text('密码'), sg.InputText()],
        [sg.Button('确定'), sg.Button('取消')]

    ]

    window = sg.Window('Python GUI', layout)

    while True:
        event, values = window.read()

        if event == None:#差 关闭窗口结束输入
            break
        if event == '确定':#确定进行赋值
            c = values[0]
            d = values[1]

    window.close()
    # 定义一个变量。用于控制外循环
    site = True
    # 循环执行 用户名输入操作
    while site:
        # 用户输入用户名
        username = c
        # 用户名需要检测是否已经存在
        if username in userlist:
            print('当前用户名已经存在,请更换用户名')
            site=False
        else:
            # 循环输入密码,如果都正确,循环结束,
            while True:
                # 输入密码
                pwd = d
                # 检测密码从长度不能低于3位
                if len(pwd) >= 3:
                    # 输入确认密码
                    repwd = input('请输入确认密码:')
                    # 检测确认密码是否和密码一致
                    if pwd == repwd:
                        # 用户名和密码都正确,就可以写入文件  用户名:密码
                        # 打开文件,写入数据
                        with open('./user.txt','w+',encoding='utf-8') as fp:
                            fp.write(f'{username}:{pwd}\n')
                        print(f'注册成功:用户名:{username}')
                        # 结束循环
                        # 结束外循环
                        site = False
                        # 结束内循环
                        break
                    else:
                        print('两次密码不一致,请重新输入')
                else:
                    print('密码格式不正确')


# 封装函数实现登录功能
def login():
    # 定义变量 控制登录的外循环
    islogin = True
    # 定义变量,用户密码的错误次数的检测
    errornum = 3
    with open('./user.txt','r') as fp:
        fp.seek(0) # 调整当前的的指针位置到文件头部
        res = fp.readlines()  # 按照每一行读取所有的用户数据
        for i in res:  # 循环读取的每一行数据
            r = i.strip()  # 处理每一个换行 admin:123\n ==> admin:123
            arr = r.split(':')  # admin:123 ==> ['admin','123']
            userlist.append(arr[0]) # 把用户名追加到 用户名列表中
            pwdlist.append(arr[1])  # 把用户对应的密码 追加到 用户密码 列表中
            #print(userlist[0])

    # 获取黑名单数据
    with open('./black.txt','w+',encoding='utf-8') as fp:
        fp.seek(0)
        res = fp.readlines()
        for i in res:
            blacklist.append(i.strip())
     #用户登录页面
    layout = [
        [sg.Text('请输入您的信息')],
        [sg.Text('账号'), sg.InputText()],
        [sg.Text('密码'), sg.InputText()],
        [sg.Button('确定'), sg.Button('取消')]

    ]

    window = sg.Window('Python GUI', layout)

    while True:
        event, values = window.read()

        if event == None:  # 差 关闭窗口结束输入
            break
        if event == '确定':  # 确定进行赋值
            c = values[0]
            d = values[1]

    window.close()
    # 循环执行用户的登录
    while islogin:
        # 获取用户登录时输入的用户名
        username = c
        # 检测当前用户名是否存在
        if username in userlist:
            # 检测用户是否属于锁定状态? 判断是否在黑名单中
            if username in blacklist:
                print('当前用户属于锁定状态,不可登录,请去忏悔把。。。')
            else:
                # 定义循环,执行密码输入
                while True:
                    # 让用户输入密码
                    pwd = d
                    # 获取用户名在用户列表中的索引,获取位置一一对应
                    inx = userlist.index(username)
                    # 检测用户输入的密码是否正确
                    if pwd == pwdlist[inx]:
                        print('登录成功')
                        # 结束循环
                        islogin = False # 结束外循环变量
                        break  # 结束内循环
                    else:
                        # 密码错误,则修改次数变量
                        errornum -= 1
                        # 判断当前的密码错误次数 == 0
                        if errornum == 0:
                            print('曾经有那么几次机会摆在你的面前。你没有把握住,恭喜你,成功的锁定了你的账户,请联系相关人员进行忏悔把!')
                            # 如何才能锁定账户信息? 把需要锁卡的用户拉入黑名单
                            with open('./black.txt','w+',encoding='utf-8') as fp:
                                fp.write(username+'\n')
                            # 结束循环
                            islogin = False  # 结束外循环变量
                            break  # 结束内循环
                        else:
                            print(f'密码输入错误,请重新输入密码,你还有{errornum}次机会')
        else:
            #用户名不存在
            print('用户名错误,请重新输入')


# 判断当前的脚本是否作为一个主进程脚本在执行
if __name__ == '__main__':

    # 调用初始化方法,加载数据
    #readallusers()

    while True:
        vars = '''
        ***************************************
        **    登录(1)  注册(2) 判断(3)  退出(4)   **
        ***************************************
        '''
        print(vars)

        # 让用户选择对应的操作
        num = input('请输入对应的序号,体验功能:')

        if num == '1':
            login()
        if num == '2':
            register()
        if num == '3':
            panduan()
        if num == '4':
            print("谢谢使用,再见")
            break

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的注册登录跳转图形界面的代码。 首先,我们需要安装PyQt5库,它是一个Python编写的跨平台GUI工具包,可以让我们轻松地创建图形用户界面。 在安装好PyQt5后,我们可以使用以下代码创建一个简单的注册登录窗口: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit class RegistrationWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 设置窗口标题 self.setWindowTitle('注册') # 设置窗口大小 self.setGeometry(100, 100, 300, 200) # 创建标签和文本框 self.username_label = QLabel('用户名:', self) self.username_label.move(50, 50) self.username = QLineEdit(self) self.username.move(100, 50) self.password_label = QLabel('密码:', self) self.password_label.move(50, 80) self.password = QLineEdit(self) self.password.move(100, 80) # 创建注册按钮 self.register_button = QPushButton('注册', self) self.register_button.move(100, 120) self.register_button.clicked.connect(self.register) def register(self): # 获取用户名和密码 username = self.username.text() password = self.password.text() # 处理注册逻辑 # ... class LoginWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 设置窗口标题 self.setWindowTitle('登录') # 设置窗口大小 self.setGeometry(100, 100, 300, 200) # 创建标签和文本框 self.username_label = QLabel('用户名:', self) self.username_label.move(50, 50) self.username = QLineEdit(self) self.username.move(100, 50) self.password_label = QLabel('密码:', self) self.password_label.move(50, 80) self.password = QLineEdit(self) self.password.move(100, 80) # 创建登录按钮 self.login_button = QPushButton('登录', self) self.login_button.move(100, 120) self.login_button.clicked.connect(self.login) def login(self): # 获取用户名和密码 username = self.username.text() password = self.password.text() # 处理登录逻辑 # ... class MainWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 设置窗口标题 self.setWindowTitle('主界面') # 设置窗口大小 self.setGeometry(100, 100, 300, 200) # 创建注册登录按钮 self.register_button = QPushButton('注册', self) self.register_button.move(50, 50) self.register_button.clicked.connect(self.show_registration) self.login_button = QPushButton('登录', self) self.login_button.move(150, 50) self.login_button.clicked.connect(self.show_login) def show_registration(self): self.registration_widget = RegistrationWidget() self.registration_widget.show() def show_login(self): self.login_widget = LoginWidget() self.login_widget.show() if __name__ == '__main__': app = QApplication(sys.argv) main_widget = MainWidget() main_widget.show() sys.exit(app.exec_()) ``` 以上代码创建了三个窗口,分别是注册窗口、登录窗口和主窗口。在主窗口中,我们创建了两个按钮,分别用于显示注册窗口和登录窗口。当用户点击这两个按钮时,会显示对应的窗口。 在注册窗口和登录窗口中,我们创建了标签和文本框用于用户输入用户名和密码,以及按钮用于提交注册登录请求。当用户点击注册登录按钮时,我们可以获取用户名和密码,并进行相应的逻辑处理。 希望这个简单的示例代码可以帮助您入门PyQt5,如果您有任何问题或需求,请随时告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值