问题描述
我正在开发一个具有基本Tkinter登录系统的Notes应用程序,该系统使用本地文件来存储数据。但是,当我注册用户时,不会立即创建文件。而是在终止程序后创建文件。这对我来说是个问题,因为注册后我无法登录,因为未创建用户文件。
代码如下:
from tkinter import *
from tkinter import messageBox
import glob
filelist = []
for file in glob.glob("*"):
filelist.append(file)
def registration_duplicate_error():
if username_content in filelist:
messageBox.showerror("Error","Username taken")
screen1.deiconify()
def registration_success():
messageBox.showinfo("Success","Registration success")
root.deiconify()
screen1.withdraw()
def registration_username_error():
messageBox.showerror("Username Error","Please Fill in a Username")
screen1.deiconify()
def registration_password_error():
messageBox.showerror("Password Error","Please Fill in a Password")
screen1.deiconify()
def login_username_error():
messageBox.showerror("Incorrect Username","Incorrect Username")
screen2.deiconify()
def login_password_error():
messageBox.showerror("Incorrect Password","Incorrect Password")
screen2.deiconify()
def login_success():
messageBox.showinfo("Login Success","Login Success")
root.deiconify()
screen2.withdraw()
def home_screen():
global screen3
screen3 = Toplevel(root)
screen3.geometry("240x240")
screen3.title("Home")
#still in progress
def verify_login():
global username1
global password1
global verify
verify = []
username1 = username_verify.get()
password1 = password_verify.get()
if username1 in filelist:
with open(username1,"r") as userfile1:
verify = userfile1.read().splitlines()
if password1 in verify:
login_success()
else:
login_password_error()
else:
login_username_error()
def login_screen():
global screen2
screen2 = Toplevel(root)
screen2.geometry("240x240")
screen2.title("Login Screen")
global username_verify
global password_verify
global username_login_entry
global password_login_entry
username_verify = StringVar()
password_verify = StringVar()
Label(screen2,text="Login Screen",bg="blue",width=34,height=2).pack()
Label(screen2,text="").pack()
Label(screen2,text="Username").pack()
username_login_entry = Entry(screen2,textvariable=username_verify).pack()
Label(screen2,text="Password").pack()
password_login_entry = Entry(screen2,textvariable=password_verify).pack()
Label(screen2,text="").pack()
Button(screen2,text="Login",width=9,height=2,command=lambda: verify_login()).pack()
def register_user():
global username_content
global password_content
username_content = username.get()
password_content = password.get()
if username_content in filelist:
registration_duplicate_error()
elif username_content == "":
registration_username_error()
elif password_content == "":
registration_password_error()
else:
with open(username_content,"w") as userfile:
userfile.write(username_content + "\n")
userfile.write(password_content)
username_entry.delete(0,END)
password_entry.delete(0,END)
registration_success()
def register_screen():
global screen1
screen1 = Toplevel(root)
screen1.geometry("240x240")
screen1.title("Register")
global username_entry
global password_entry
global username
global password
username = StringVar()
password = StringVar()
Label(screen1,text="Register Screen",height=2).pack()
Label(screen1,text="").pack()
Label(screen1,text="Username").pack()
username_entry = Entry(screen1,textvariable=username)
username_entry.pack()
Label(screen1,text="Password").pack()
password_entry = Entry(screen1,textvariable=password)
password_entry.pack()
Label(screen1,text="").pack()
Button(screen1,text="Register",command=lambda: register_user()).pack()
def entry_screen():
global root
root = Tk()
root.geometry("240x190")
root.title("Welcome")
Label(root,text="Welcome",height=2).pack()
Label(root,text="").pack()
Button(root,command=lambda: register_screen()).pack()
Label(root,command=lambda: login_screen()).pack()
Label(root,text="").pack()
root.mainloop()
entry_screen()
感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)