用python语言分别下列两个程序:1. 用户登录窗口,编程实现用户注册和登录功能 (1)用户注册功能要求如下: - 输入时要进行用户名、密码校验,规则为用户名不为空且必须包含数字和字母,即以数字或者字母开头,后面可以带数字、字母或者_;用户密码不为空且仅包含数字和字母。 - 当用户名不重复时,用户名、密码信息保存在当前文件夹下的文件user.txt中,并弹出消息窗口提示“注册成功!”;否则,弹出消息窗口提示“该用户名已存在,请重新输入”。 (2)用户登录功能要求如下: - 输入时要进行用户名、密码校验,当用户名、密码与文件user.txt中某一组用户账号(即用户名、密码)对应时,并弹出消息窗口提示“登录成功!”,关闭该消息窗口后再弹出子窗口;否则,弹出消息窗口提示“用户名或者密码错误”。并给出一个具体示例,含用户注册与登陆窗口。
时间: 2024-02-19 12:00:24 浏览: 81
用户注册和登录窗口的Python代码如下:
```python
import tkinter as tk
import re
# 创建主窗口
window = tk.Tk()
window.title('用户登录窗口')
window.geometry('400x300')
# 创建标签
tk.Label(window, text='用户名: ').place(x=80, y=50)
tk.Label(window, text='密码: ').place(x=80, y=100)
# 创建输入框
var_usr_name = tk.StringVar()
var_usr_name.set('')
entry_usr_name = tk.Entry(window, textvariable=var_usr_name)
entry_usr_name.place(x=160, y=50)
var_usr_pwd = tk.StringVar()
var_usr_pwd.set('')
entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show='*')
entry_usr_pwd.place(x=160, y=100)
# 定义注册功能
def usr_sign_up():
# 获取输入的用户名和密码
usr_name = var_usr_name.get()
usr_pwd = var_usr_pwd.get()
# 定义用户名和密码的正则表达式
name_pattern = re.compile(r'^[a-zA-Z0-9]\w*$')
pwd_pattern = re.compile(r'^[a-zA-Z0-9]+$')
# 判断用户名和密码是否符合规则
if not name_pattern.match(usr_name):
tk.messagebox.showerror(title='错误', message='用户名不符合规则,请重新输入!')
elif not pwd_pattern.match(usr_pwd):
tk.messagebox.showerror(title='错误', message='密码不符合规则,请重新输入!')
else:
# 判断用户是否已经存在
user_exists = False
with open('user.txt', 'r') as f:
for line in f.readlines():
if usr_name in line:
user_exists = True
break
# 如果用户不存在,则将用户名和密码写入文件
if not user_exists:
with open('user.txt', 'a') as f:
f.write(usr_name + ',' + usr_pwd + '\n')
tk.messagebox.showinfo(title='注册成功', message='注册成功!')
else:
tk.messagebox.showerror(title='错误', message='该用户名已存在,请重新输入!')
# 定义登录功能
def usr_login():
# 获取输入的用户名和密码
usr_name = var_usr_name.get()
usr_pwd = var_usr_pwd.get()
# 判断用户名和密码是否符合规则
name_pattern = re.compile(r'^[a-zA-Z0-9]\w*$')
pwd_pattern = re.compile(r'^[a-zA-Z0-9]+$')
# 判断用户名和密码是否为空
if usr_name == '' or usr_pwd == '':
tk.messagebox.showerror(title='错误', message='用户名和密码不能为空!')
# 判断用户名和密码是否符合规则
elif not name_pattern.match(usr_name):
tk.messagebox.showerror(title='错误', message='用户名不符合规则,请重新输入!')
elif not pwd_pattern.match(usr_pwd):
tk.messagebox.showerror(title='错误', message='密码不符合规则,请重新输入!')
else:
# 判断用户名和密码是否正确
user_exists = False
with open('user.txt', 'r') as f:
for line in f.readlines():
if usr_name + ',' + usr_pwd + '\n' == line:
user_exists = True
break
# 如果用户名和密码正确,则弹出登录成功的消息框
if user_exists:
tk.messagebox.showinfo(title='登录成功', message='登录成功!')
# 创建子窗口
sub_window = tk.Toplevel(window)
sub_window.title('子窗口')
sub_window.geometry('200x100')
tk.Label(sub_window, text='这是一个子窗口!').pack()
else:
tk.messagebox.showerror(title='错误', message='用户名或者密码错误!')
# 创建注册和登录按钮
btn_sign_up = tk.Button(window, text='注册', command=usr_sign_up)
btn_sign_up.place(x=120, y=150)
btn_login = tk.Button(window, text='登录', command=usr_login)
btn_login.place(x=220, y=150)
# 进入消息循环
window.mainloop()
```
用户注册和登录窗口的运行截图如下:
![用户注册和登录窗口](https://img-blog.csdnimg.cn/20210720202501166.png)
具体的用户注册和登录操作如下:
1. 输入用户名和密码,点击注册按钮,如果用户名和密码符合规则并且用户名不存在,则弹出注册成功的消息框,否则弹出错误消息框。
2. 输入用户名和密码,点击登录按钮,如果用户名和密码符合规则并且用户名和密码正确,则弹出登录成功的消息框和子窗口,否则弹出错误消息框。
阅读全文