微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有一种方法可以立即在程序中而不是之后打开文件?

如何解决有没有一种方法可以立即在程序中而不是之后打开文件?

我正在开发一个具有基本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 举报,一经查实,本站将立刻删除。