My program creates a simple application, using Tkinter, that aims to compare a user's details (username and password) to a file.
My program uses 3 frames. -"usernameFrame" -"passwordFrame" -"resultFrame"
It has a username label calld "ulab" and a password label called "plab" It has an "Output" label which tells the user if he has successfully logged in or not At the bottom it has a Login button which connects to the command "LoginF".
However, I always get the error "TypeError: LoginF() missing 2 required positional arguments: 'username' and 'password"
from tkinter import *
root = Tk()
root.title("Validating user details")
Title = Label(root,text="Welcome, please login below", fg = "blue", bg = "yellow", font = "Verdana 30 bold", bd=1, relief="solid",padx=20)
Title.pack(side = TOP)
usernameFrame = Frame(root)
usernameFrame.pack(side = TOP)
uLab = Label(usernameFrame,text="Enter username: ",fg="light green",bg="green",font = "Calibri 26 italic",bd=1, relief="solid")
uLab.pack(side = LEFT)
username = Entry(usernameFrame)
username.pack(side = LEFT)
passwordFrame = Frame(root)
passwordFrame.pack(side = TOP)
pnLab = Label(passwordFrame,text="Enter password: ",fg="light green",bg="green",font = "Calibri 26 italic",bd=1, relief="solid")
pnLab.pack(side = LEFT,fill = X,expand = 1)
password = Entry(passwordFrame,show="*")
password.pack(side = LEFT)
resultFrame = Frame(root)
resultFrame.pack(side = TOP)
Output = Label(resultFrame,text="Display Result Here",fg="#008080",bg="#00FFFF",font = "Tahoma 30 bold",bd=1, relief="solid")
Output.pack(side = LEFT,fill = X,expand = 1)
def LoginF(username,password):
Login = False
file = open("OCR PPP Python Login List_user.txt","r")
data = file.read()
if username+","+password in data:
Output.configure(text="Successfully logged in")
Login = True
else:
Output.configure(text="Hmm.. Try again")
Login = False
file.close()
logButton = Button(resultFrame,text="Login",fg="#FF8C00",bg="#FF4500",font = "Ariel 28 underline",bd=1, relief="solid",command=LoginF)
logButton.pack(side = LEFT)
root.mainloop()