import tkinter as tk
from tkinter import messagebox

# Sample username and password
USER_CREDENTIALS = {"user1": "password123"}

class App:
    def __init__(self, root):
        self.root = root
        self.root.title("Login Example")
        
        # Frames for login and logged in views
        self.login_frame = tk.Frame(self.root)
        self.logged_in_frame = tk.Frame(self.root)
        
        # Create login view widgets
        self.username_label = tk.Label(self.login_frame, text="Username:")
        self.username_entry = tk.Entry(self.login_frame)
        
        self.password_label = tk.Label(self.login_frame, text="Password:")
        self.password_entry = tk.Entry(self.login_frame, show="*")
        
        self.login_button = tk.Button(self.login_frame, text="Login", command=self.login)
        
        self.username_label.grid(row=0, column=0)
        self.username_entry.grid(row=0, column=1)
        self.password_label.grid(row=1, column=0)
        self.password_entry.grid(row=1, column=1)
        self.login_button.grid(row=2, columnspan=2)
        
        # Create logged-in view widgets
        self.logged_in_label = tk.Label(self.logged_in_frame, text="Welcome!")
        self.logout_button = tk.Button(self.logged_in_frame, text="Logout", command=self.logout)
        
        self.logged_in_label.grid(row=0, column=0)
        self.logout_button.grid(row=1, columnspan=2)
        
        # Start with login screen
        self.login_frame.pack()

    def login(self):
        username = self.username_entry.get()
        password = self.password_entry.get()
        
        # Check credentials
        if USER_CREDENTIALS.get(username) == password:
            # Switch to logged-in view
            self.login_frame.pack_forget()
            self.logged_in_frame.pack()
        else:
            # Show error message
            messagebox.showerror("Login Failed", "Incorrect username or password.")

    def logout(self):
        # Switch back to login view
        self.logged_in_frame.pack_forget()
        self.login_frame.pack()

# Create the main window
root = tk.Tk()
app = App(root)
root.mainloop()
