我编写了一个程序,该程序实质上允许用户创建配置文件,然后稍后登录(在关闭代码之后)并继续将其数据保存到文本文件中。
class SignIn(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.configure(background="#FFC2B5")
#Exit
tk.Button(self, text="EXIT", command=EXIT, bg="#FFA795") .grid(column=0, row=0, sticky="nesw", pady=10, padx=10)
#InputDetails
input_details = tk.Label(self, text="Please input your first and last name to access your profile")
input_details.grid(column=0, row=1)
#FIRSTNAME
first_name_label = tk.Label(self, text="First Name:")
first_name_label.grid(column=0, row=2)
first_name_entry = tk.Entry(self)
first_name_entry.grid(column=1, row=2)
#LASTNAME
last_name_label = tk.Label(self, text="Last Name:")
last_name_label.grid(column=0, row=3)
last_name_entry= tk.Entry(self)
last_name_entry.grid(column=1, row=3)
def SignInConfirm():
for file in os.listdir("/Users/140032/Desktop/SDD Major Project/"):
filename = os.fsdecode(file)
if filename.endswith(".txt"):
completeName = os.path.join("/Users/140032/Desktop/SDD Major Project/", file)
with open(completeName,'r') as inf:
dict_from_file = ast.literal_eval(inf.read())
if dict_from_file['First_Name'] == first_name_entry.get() and dict_from_file['Last_Name'] == last_name_entry.get():
print("Credentials Accepted. Welcome to 'The Mega Pop Quiz' " + dict_from_file["First_Name"] + "!")
global PermFile
PermFile = str(file)
print(PermFile)
else:
continue
continue
else:
continue
controller.show_frame("SubjectsPage")
#CONFIRM
confirm_button = tk.Button(self, text="SUBMIT", command=SignInConfirm )
confirm_button.grid(column=2, row=4)
我在使用用户在代码的其他部分登录的文本文件时遇到麻烦。本质上,它会遍历每个文件,当找到与输入匹配的文件时,它将继续执行程序。 PermFile是用户登录的文件,以后我无法在函数外部(在单独的类中)找到引用该文件的方法。如果可以获取用户登录的文件名作为可以在其他类中使用的变量,则可以继续执行该程序的其余部分。