写一个GUI界面程序用户注册功能要求如下: 输入时要进行用户名、密码校验,规则为用户名不为空且必须包含数字和字母,即以数字或者字母开头,后面可以带数字、字母或者_;用户密码不为空且仅包含数字和字母。 当用户名不重复时,用户名、密码信息保存在当前文件夹下的文件user.txt中,并弹出消息窗口提示“注册成功!”;否则,弹出消息窗口提示“该用户名已存在,请重新输入”。用户登录功能要求如下: 输入时要进行用户名、密码校验,当用户名、密码与文件user.txt中某一组用户账号(即用户名、密码)对应时,并弹出消息窗口提示“登录成功!”,关闭该消息窗口后再弹出子窗口;否则,弹出消息窗口提示“用户名或者密码错误”。
时间: 2024-02-11 13:10:04 浏览: 64
从access表中读取用户名和密码的登陆界面
4星 · 用户满意度95%
好的,以下是一个使用Tkinter库实现的用户注册和登录的GUI界面程序的示例代码:
```python
import tkinter as tk
import re
# 检查用户名和密码是否符合规则
def check_username_password(username, password):
# 用户名规则:不为空且必须包含数字和字母,即以数字或者字母开头,后面可以带数字、字母或者_
if not re.match(r'^[a-zA-Z0-9][a-zA-Z0-9_]*$', username):
return False
# 密码规则:不为空且仅包含数字和字母
if not re.match(r'^[a-zA-Z0-9]+$', password):
return False
return True
# 检查用户名是否已经存在于user.txt文件中
def check_username_exists(username):
try:
with open('user.txt', 'r') as f:
for line in f:
if line.strip().split(',')[0] == username:
return True
except:
pass
return False
# 将用户名和密码信息保存在user.txt文件中
def save_username_password(username, password):
try:
with open('user.txt', 'a') as f:
f.write(username + ',' + password + '\n')
except:
pass
# 登录窗口
def login_window():
login_win = tk.Toplevel()
login_win.title('登录')
login_win.geometry('300x150')
# 用户名输入框
tk.Label(login_win, text='用户名:').grid(row=0, column=0)
username_var = tk.StringVar()
username_entry = tk.Entry(login_win, textvariable=username_var)
username_entry.grid(row=0, column=1)
# 密码输入框
tk.Label(login_win, text='密码:').grid(row=1, column=0)
password_var = tk.StringVar()
password_entry = tk.Entry(login_win, textvariable=password_var, show='*')
password_entry.grid(row=1, column=1)
# 登录按钮
def login():
username = username_var.get()
password = password_var.get()
if not check_username_password(username, password):
tk.messagebox.showinfo('提示', '用户名或密码格式不正确!')
else:
try:
with open('user.txt', 'r') as f:
for line in f:
if line.strip() == username + ',' + password:
tk.messagebox.showinfo('提示', '登录成功!')
login_win.destroy()
tk.Toplevel().title('欢迎')
return
except:
pass
tk.messagebox.showinfo('提示', '用户名或密码错误!')
tk.Button(login_win, text='登录', command=login).grid(row=2, column=0, pady=10)
tk.Button(login_win, text='退出', command=login_win.destroy).grid(row=2, column=1, pady=10)
# 注册窗口
def register_window():
reg_win = tk.Toplevel()
reg_win.title('注册')
reg_win.geometry('300x150')
# 用户名输入框
tk.Label(reg_win, text='用户名:').grid(row=0, column=0)
username_var = tk.StringVar()
username_entry = tk.Entry(reg_win, textvariable=username_var)
username_entry.grid(row=0, column=1)
# 密码输入框
tk.Label(reg_win, text='密码:').grid(row=1, column=0)
password_var = tk.StringVar()
password_entry = tk.Entry(reg_win, textvariable=password_var, show='*')
password_entry.grid(row=1, column=1)
# 注册按钮
def register():
username = username_var.get()
password = password_var.get()
if not check_username_password(username, password):
tk.messagebox.showinfo('提示', '用户名或密码格式不正确!')
elif check_username_exists(username):
tk.messagebox.showinfo('提示', '该用户名已存在,请重新输入!')
else:
save_username_password(username, password)
tk.messagebox.showinfo('提示', '注册成功!')
reg_win.destroy()
tk.Button(reg_win, text='注册', command=register).grid(row=2, column=0, pady=10)
tk.Button(reg_win, text='退出', command=reg_win.destroy).grid(row=2, column=1, pady=10)
# 主窗口
root = tk.Tk()
root.geometry('300x150')
root.title('用户注册和登录')
# 注册按钮
tk.Button(root, text='注册', command=register_window).grid(row=0, column=0, padx=50, pady=20)
# 登录按钮
tk.Button(root, text='登录', command=login_window).grid(row=0, column=1, padx=50, pady=20)
root.mainloop()
```
在这个程序中,我们使用了Tkinter库来创建GUI界面。程序分为三个窗口:主窗口、注册窗口和登录窗口。在主窗口中,我们添加了两个按钮,分别是“注册”和“登录”按钮。当用户点击这两个按钮时,会分别弹出注册窗口和登录窗口。
在注册窗口中,我们添加了用户名和密码输入框,以及“注册”和“退出”按钮。当用户点击“注册”按钮时,会检查用户名和密码是否符合规则,并检查用户名是否已经存在于user.txt文件中。如果符合要求且用户名不存在,则将用户名和密码信息保存在user.txt文件中,并弹出消息窗口提示“注册成功!”;否则,弹出消息窗口提示“该用户名已存在,请重新输入”。
在登录窗口中,我们添加了用户名和密码输入框,以及“登录”和“退出”按钮。当用户点击“登录”按钮时,会检查用户名和密码是否符合规则,并在user.txt文件中查找是否存在该组用户账号。如果存在,则弹出消息窗口提示“登录成功!”并关闭该消息窗口后再弹出子窗口;否则,弹出消息窗口提示“用户名或者密码错误”。
在编写这个程序时,我们使用了正则表达式来检查用户名和密码是否符合规则,使用文件操作来读写user.txt文件,使用Tkinter库来创建GUI界面。希望这个示例能够帮助您完成您的编程任务。
阅读全文