这个界面要求是有登录注册,要求记住密码
时间: 2024-02-16 07:04:50 浏览: 18
好的,这是一个带有登录和注册功能的 Tkinter 界面示例代码,它可以记住密码:
```python
import tkinter as tk
class LoginApp:
def __init__(self, master):
self.master = master
master.title("Login")
# 创建控件
self.label_username = tk.Label(master, text="Username:")
self.label_password = tk.Label(master, text="Password:")
self.entry_username = tk.Entry(master)
self.entry_password = tk.Entry(master, show="*")
self.checkbox_remember = tk.Checkbutton(master, text="Remember Me", command=self.remember_password)
self.button_login = tk.Button(master, text="Login", command=self.login)
self.button_register = tk.Button(master, text="Register", command=self.register)
# 布局控件
self.label_username.grid(row=0, column=0)
self.label_password.grid(row=1, column=0)
self.entry_username.grid(row=0, column=1)
self.entry_password.grid(row=1, column=1)
self.checkbox_remember.grid(columnspan=2, sticky=tk.W)
self.button_login.grid(row=2, column=0)
self.button_register.grid(row=2, column=1)
# 初始化用户名和密码
self.username = tk.StringVar()
self.password = tk.StringVar()
self.username.set("")
self.password.set("")
self.entry_username.focus_set()
# 如果记住密码,恢复用户名和密码
if self.get_remember_password():
self.username.set(self.get_saved_username())
self.password.set(self.get_saved_password())
def remember_password(self):
remember_me = self.checkbox_remember.var.get()
if remember_me:
self.save_username_password()
else:
self.delete_saved_username_password()
def save_username_password(self):
with open("login.txt", "w") as f:
f.write(f"{self.username.get()}\n{self.password.get()}")
def delete_saved_username_password(self):
with open("login.txt", "w") as f:
f.write("")
def get_remember_password(self):
try:
with open("login.txt", "r") as f:
return bool(f.read())
except FileNotFoundError:
return False
def get_saved_username(self):
with open("login.txt", "r") as f:
return f.readline().strip()
def get_saved_password(self):
with open("login.txt", "r") as f:
f.readline()
return f.readline().strip()
def login(self):
# 验证用户名和密码
if self.entry_username.get() == self.get_saved_username() and self.entry_password.get() == self.get_saved_password():
self.master.destroy()
# 登录成功,进入主界面
app = tk.Tk()
app.title("Main App")
tk.Label(app, text="Welcome!").pack()
app.mainloop()
else:
# 登录失败
tk.messagebox.showerror("Error", "Invalid username or password.")
def register(self):
# 进入注册界面
self.master.destroy()
app = tk.Tk()
app.title("Register")
tk.Label(app, text="Username:").grid(row=0, column=0)
tk.Label(app, text="Password:").grid(row=1, column=0)
username_entry = tk.Entry(app)
password_entry = tk.Entry(app, show="*")
username_entry.grid(row=0, column=1)
password_entry.grid(row=1, column=1)
def on_register():
# 保存新的用户名和密码
with open("login.txt", "w") as f:
f.write(f"{username_entry.get()}\n{password_entry.get()}")
app.destroy()
# 注册成功,进入主界面
app = tk.Tk()
app.title("Main App")
tk.Label(app, text="Welcome!").pack()
app.mainloop()
tk.Button(app, text="Register", command=on_register).grid(columnspan=2)
app.mainloop()
root = tk.Tk()
app = LoginApp(root)
root.mainloop()
```
上面的代码会在当前目录下创建一个名为 "login.txt" 的文件,用于保存用户名和密码。如果记住密码,则在下次登录时自动恢复用户名和密码。注意:这里的保存密码方式不够安全,只是为了演示如何实现记住密码功能。在实际应用中,应该使用更安全的加密方式保存密码。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)