用户登录窗口,主窗口界面如图1、图2所示,编程实现用户注册和登录功能 (1)用户注册功能要求如下: · 输入时要进行用户名、密码校验,规则为用户名不 为空且必须包含数字和字母,即以数字或者字母开 头,后面可以带数字、字母或者_;用户密码不为空 且仅包含数字和字母。 · 当用户名不重复时,用户名、密码信息保存在当前文 件夹下的文件user.txt中,并弹出消息窗口提示“注册 成 功!”;否则弹出消息窗口提示“该用户名已存在, 请重新输入”。
时间: 2024-02-19 15:59:22 浏览: 72
以下是一个基于Tkinter的用户注册和登录窗口的示例代码,包含了用户注册和登录的功能实现:
```python
import re
import tkinter as tk
from tkinter import messagebox
class LoginWindow(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.title("用户登录")
self.pack()
self.create_widgets()
def create_widgets(self):
self.username_label = tk.Label(self, text="用户名")
self.username_label.pack()
self.username_entry = tk.Entry(self)
self.username_entry.pack()
self.password_label = tk.Label(self, text="密码")
self.password_label.pack()
self.password_entry = tk.Entry(self, show="*")
self.password_entry.pack()
self.login_button = tk.Button(self, text="登录", command=self.login)
self.login_button.pack(side="left")
self.register_button = tk.Button(self, text="注册", command=self.register)
self.register_button.pack(side="right")
def login(self):
username = self.username_entry.get()
password = self.password_entry.get()
if self.validate_username(username) and self.validate_password(password):
try:
with open("user.txt") as f:
for line in f:
if line.strip() == f"{username},{password}":
messagebox.showinfo("提示", "登录成功!")
return
except FileNotFoundError:
pass
messagebox.showerror("错误", "用户名或密码错误!")
else:
messagebox.showerror("错误", "用户名或密码格式不正确!")
def register(self):
username = self.username_entry.get()
password = self.password_entry.get()
if self.validate_username(username) and self.validate_password(password):
try:
with open("user.txt", "x") as f:
f.write(f"{username},{password}\n")
except FileExistsError:
with open("user.txt") as f:
for line in f:
if line.startswith(username):
messagebox.showerror("错误", "该用户名已存在,请重新输入!")
return
with open("user.txt", "a") as f:
f.write(f"{username},{password}\n")
messagebox.showinfo("提示", "注册成功!")
else:
messagebox.showerror("错误", "用户名或密码格式不正确!")
def validate_username(self, username):
return bool(re.match(r"^[A-Za-z0-9][A-Za-z0-9_]*$", username))
def validate_password(self, password):
return bool(re.match(r"^[A-Za-z0-9]+$", password))
root = tk.Tk()
app = LoginWindow(master=root)
app.mainloop()
```
在这个示例代码中,我们创建了一个名为LoginWindow的类,继承自Tkinter的Frame类,用于实现用户登录窗口。在create_widgets方法中,我们创建了用户名和密码的标签和文本框,以及登录和注册的按钮。在login和register方法中,我们分别实现了用户登录和注册的功能。其中,validate_username和validate_password方法用于对用户名和密码进行格式验证,使用正则表达式进行匹配,如果格式不正确就会弹出错误提示框。在登录时,我们从user.txt文件中读取用户名和密码信息,逐行进行比对,如果匹配成功就弹出登录成功的提示框,否则弹出用户名或密码错误的提示框。在注册时,我们先进行用户名是否已存在的判断,如果不存在就将用户名和密码写入到user.txt文件中,如果已存在就弹出该用户名已存在的提示框。最后在登录和注册成功时,都会弹出注册成功或登录成功的提示框。
阅读全文