python登录界面
下面是一个简单的登录和注册界面,使用Python和Tkinter库来创建图形用户界面(GUI)。
1.代码展示
1.以下是完整的代码:
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
# 存储用户信息的文件路径
USER_DATA_FILE = "user_data.txt"
class LoginApp:
def __init__(self, root):
self.root = root
self.root.title("登录")
self.root.geometry("300x250")
self.root.configure(bg="#f0f0f0")
# 设置样式
style = ttk.Style()
style.theme_use('clam')
style.configure('TLabel', font=('Arial', 12), background="#f0f0f0", foreground="#333333")
style.configure('TEntry', font=('Arial', 12))
style.configure('TButton', font=('Arial', 12), background="#4CAF50", foreground="white")
# 创建用户名和密码标签及输入框
ttk.Label(root, text="用户名").grid(row=0, column=0, padx=20, pady=10, sticky='e')
self.username_entry = ttk.Entry(root)
self.username_entry.grid(row=0, column=1, padx=20, pady=10)
ttk.Label(root, text="密码").grid(row=1, column=0, padx=20, pady=10, sticky='e')
self.password_entry = ttk.Entry(root, show="*")
self.password_entry.grid(row=1, column=1, padx=20, pady=10)
# 创建登录按钮和注册按钮
ttk.Button(root, text="登录", command=self.login).grid(row=2, column=0, columnspan=2, pady=10)
ttk.Button(root, text="注册", command=self.register_window).grid(row=3, column=0, columnspan=2, pady=10)
def login(self):
username = self.username_entry.get()
password = self.password_entry.get()
if self.validate_user(username, password):
self.open_welcome_screen(username)
else:
messagebox.showerror("错误", "用户名或密码错误")
def validate_user(self, username, password):
try:
with open(USER_DATA_FILE, "r") as file:
for line in file:
stored_username, stored_password = line.strip().split(":")
if username == stored_username and password == stored_password:
return True
except FileNotFoundError:
pass
return False
def register_window(self):
reg_root = tk.Toplevel(self.root)
reg_app = RegisterApp(reg_root)
def open_welcome_screen(self, username):
self.root.destroy()
welcome_root = tk.Tk()
WelcomeScreen(welcome_root, username)
welcome_root.mainloop()
class RegisterApp:
def __init__(self, root):
self.root = root
self.root.title("注册")
self.root.geometry("300x250")
self.root.configure(bg="#f0f0f0")
# 设置样式
style = ttk.Style()
style.theme_use('clam')
style.configure('TLabel', font=('Arial', 12), background="#f0f0f0", foreground="#333333")
style.configure('TEntry', font=('Arial', 12))
style.configure('TButton', font=('Arial', 12), background="#4CAF50", foreground="white")
# 创建用户名和密码标签及输入框
ttk.Label(root, text="用户名").grid(row=0, column=0, padx=20, pady=10, sticky='e')
self.username_entry = ttk.Entry(root)
self.username_entry.grid(row=0, column=1, padx=20, pady=10)
ttk.Label(root, text="密码").grid(row=1, column=0, padx=20, pady=10, sticky='e')
self.password_entry = ttk.Entry(root, show="*")
self.password_entry.grid(row=1, column=1, padx=20, pady=10)
# 创建注册按钮
ttk.Button(root, text="注册", command=self.register).grid(row=2, column=0, columnspan=2, pady=10)
def register(self):
username = self.username_entry.get()
password = self.password_entry.get()
if not username or not password:
messagebox.showerror("错误", "用户名和密码不能为空")
return
if self.check_existing_user(username):
messagebox.showerror("错误", "用户名已存在")
return
with open(USER_DATA_FILE, "a") as file:
file.write(f"{username}:{password}\n")
messagebox.showinfo("成功", "注册成功!")
self.root.destroy()
def check_existing_user(self, username):
try:
with open(USER_DATA_FILE, "r") as file:
for line in file:
stored_username, _ = line.strip().split(":")
if username == stored_username:
return True
except FileNotFoundError:
pass
return False
class WelcomeScreen:
def __init__(self, root, username):
self.root = root
self.root.title("欢迎")
self.root.geometry("300x200")
self.root.configure(bg="#f0f0f0")
# 设置样式
style = ttk.Style()
style.theme_use('clam')
style.configure('TLabel', font=('Arial', 16), background="#f0f0f0", foreground="#333333")
style.configure('TButton', font=('Arial', 12), background="#4CAF50", foreground="white")
# 显示欢迎信息
ttk.Label(root, text=f"欢迎回来, {username}!").pack(pady=20)
# 创建退出按钮
ttk.Button(root, text="退出", command=root.quit).pack(pady=10)
if __name__ == "__main__":
root = tk.Tk()
app = LoginApp(root)
root.mainloop()
2.功能说明:
-
登录界面:
- 包含用户名和密码的输入框。
- 登录按钮:验证用户名和密码是否正确。如果正确,则打开欢迎界面。
- 注册按钮:打开注册窗口。
-
注册界面:
- 包含用户名和密码的输入框。
- 注册按钮:检查用户名是否已存在,如果不存在则将用户名和密码写入文件。
-
欢迎界面:
- 显示欢迎信息,包含用户名。
- 提供退出按钮以关闭应用程序。
-
数据存储:
- 用户信息存储在
user_data.txt
文件中,格式为username:password
。 -
消息提示:
- 使用
messagebox
显示登录、注册和错误信息。 -
美化设计:
- 使用
ttk
模块来设置样式。 - 添加背景颜色、字体和按钮样式以提高界面的美观性。
3.页面展示
作者:编织幻境的妖