Ваша проблема в том, что вы возвращаетесь, если вход выполнен успешно, поэтому блок, который вызывает функции отображения, никогда не выполняется.
def login():
username = input("Please enter your username?:\n")
password = input("Please enter your password?:\n")
for line in open("user.txt","r").readlines():
field = line.strip().split(",")
if username == field[0] and password == field[1]:
print("Hello " + username + ", welcome back!\n")
return True # <-- this is causing your problems
if field[0] == "admin":
displayMenu_Admin()
else:
displayMenu()
print("Username or Password Incorrect\n")
return False
Чтобы исправить ваши проблемы, просто вернитесь после отображения меню
def login():
username = input("Please enter your username?:\n")
password = input("Please enter your password?:\n")
for line in open("user.txt","r").readlines():
field = line.strip().split(",")
if username == field[0] and password == field[1]:
print("Hello " + username + ", welcome back!\n")
if field[0] == "admin":
displayMenu_Admin()
else:
displayMenu()
return True
print("Username or Password Incorrect\n")
return False
Однако, может быть, лучше вместо этого вернуть кортеж и позволить кому-то еще обрабатывать элементы меню, такие как:
def login():
username = input("Please enter your username?:\n")
password = input("Please enter your password?:\n")
for line in open("user.txt","r").readlines():
field = line.strip().split(",")
if username == field[0] and password == field[1]:
print("Hello " + username + ", welcome back!\n")
return True, field[0]== "admin"
return False, False
login_success, is_admin = login()
if login_success and is_admin:
displayMenu_Admin()
elif login_success:
displayMenu()
else:
print("Username or Password Incorrect\n")