aW1wb3J0IHRraW50ZXIgYXMgdGsKZnJvbSB0a2ludGVyIGltcG9ydCBtZXNzYWdlYm94CgojIC0tLSBNYWluIFdpbmRvdyAtLS0Kcm9vdCA9IHRrLlRrKCkKcm9vdC50aXRsZSgmcXVvdDtMb2dpbiBGb3JtJnF1b3Q7KQpyb290Lmdlb21ldHJ5KCZxdW90OzQwMHgzMDAmcXVvdDspCnJvb3QuY29uZmlnKGJnPSZxdW90OyNmMGYwZjAmcXVvdDspCgojIC0tLSBGdW5jdGlvbnMgLS0tCmRlZiBsb2dpbigpOgogICAgdXNlciA9IHVzZXJuYW1lX2VudHJ5LmdldCgpCiAgICBwd2QgPSBwYXNzd29yZF9lbnRyeS5nZXQoKQoKICAgICMgRXhhbXBsZSBzdGF0aWMgdXNlcm5hbWUgJmFtcDsgcGFzc3dvcmQKICAgIGlmIHVzZXIgPT0gJnF1b3Q7YWRtaW4mcXVvdDsgYW5kIHB3ZCA9PSAmcXVvdDsxMjM0NSZxdW90OzoKICAgICAgICBtZXNzYWdlYm94LnNob3dpbmZvKCZxdW90O0xvZ2luIFN1Y2Nlc3MmcXVvdDssIGYmcXVvdDtXZWxjb21lIHt1c2VyfSEmcXVvdDspCiAgICBlbHNlOgogICAgICAgIG1lc3NhZ2Vib3guc2hvd2Vycm9yKCZxdW90O0Vycm9yJnF1b3Q7LCAmcXVvdDtJbnZhbGlkIFVzZXJuYW1lIG9yIFBhc3N3b3JkJnF1b3Q7KQoKZGVmIHJlc2V0KCk6CiAgICB1c2VybmFtZV9lbnRyeS5kZWxldGUoMCwgdGsuRU5EKQogICAgcGFzc3dvcmRfZW50cnkuZGVsZXRlKDAsIHRrLkVORCkKCiMgLS0tIExhYmVscyBhbmQgRW50cmllcyAtLS0KdGsuTGFiZWwocm9vdCwgdGV4dD0mcXVvdDtMb2dpbiBGb3JtJnF1b3Q7LCBmb250PSgmcXVvdDtBcmlhbCZxdW90OywgMjAsICZxdW90O2JvbGQmcXVvdDspLCBiZz0mcXVvdDsjZjBmMGYwJnF1b3Q7KS5wYWNrKHBhZHk9MjApCgpmcmFtZSA9IHRrLkZyYW1lKHJvb3QsIGJnPSZxdW90OyNmMGYwZjAmcXVvdDspCmZyYW1lLnBhY2socGFkeT0xMCkKCnRrLkxhYmVsKGZyYW1lLCB0ZXh0PSZxdW90O1VzZXJuYW1lOiZxdW90OywgZm9udD0oJnF1b3Q7QXJpYWwmcXVvdDssIDEyKSwgYmc9JnF1b3Q7I2YwZjBmMCZxdW90OykuZ3JpZChyb3c9MCwgY29sdW1uPTAsIHBhZHg9MTAsIHBhZHk9MTApCnVzZXJuYW1lX2VudHJ5ID0gdGsuRW50cnkoZnJhbWUsIGZvbnQ9KCZxdW90O0FyaWFsJnF1b3Q7LCAxMiksIHdpZHRoPTIwKQp1c2VybmFtZV9lbnRyeS5ncmlkKHJvdz0wLCBjb2x1bW49MSkKCnRrLkxhYmVsKGZyYW1lLCB0ZXh0PSZxdW90O1Bhc3N3b3JkOiZxdW90OywgZm9udD0oJnF1b3Q7QXJpYWwmcXVvdDssIDEyKSwgYmc9JnF1b3Q7I2YwZjBmMCZxdW90OykuZ3JpZChyb3c9MSwgY29sdW1uPTAsIHBhZHg9MTAsIHBhZHk9MTApCnBhc3N3b3JkX2VudHJ5ID0gdGsuRW50cnkoZnJhbWUsIGZvbnQ9KCZxdW90O0FyaWFsJnF1b3Q7LCAxMiksIHNob3c9JnF1b3Q7KiZxdW90Oywgd2lkdGg9MjApCnBhc3N3b3JkX2VudHJ5LmdyaWQocm93PTEsIGNvbHVtbj0xKQoKIyAtLS0gQnV0dG9ucyAtLS0KYnRuX2ZyYW1lID0gdGsuRnJhbWUocm9vdCwgYmc9JnF1b3Q7I2YwZjBmMCZxdW90OykKYnRuX2ZyYW1lLnBhY2socGFkeT0yMCkKCnRrLkJ1dHRvbihidG5fZnJhbWUsIHRleHQ9JnF1b3Q7TG9naW4mcXVvdDssIGNvbW1hbmQ9bG9naW4sIGZvbnQ9KCZxdW90O0FyaWFsJnF1b3Q7LCAxMiksIGJnPSZxdW90OyM0Q0FGNTAmcXVvdDssIGZnPSZxdW90O3doaXRlJnF1b3Q7LCB3aWR0aD0xMCkuZ3JpZChyb3c9MCwgY29sdW1uPTAsIHBhZHg9MTApCnRrLkJ1dHRvbihidG5fZnJhbWUsIHRleHQ9JnF1b3Q7UmVzZXQmcXVvdDssIGNvbW1hbmQ9cmVzZXQsIGZvbnQ9KCZxdW90O0FyaWFsJnF1b3Q7LCAxMiksIGJnPSZxdW90OyNmNDQzMzYmcXVvdDssIGZnPSZxdW90O3doaXRlJnF1b3Q7LCB3aWR0aD0xMCkuZ3JpZChyb3c9MCwgY29sdW1uPTEsIHBhZHg9MTApCgpyb290Lm1haW5sb29wKCk=
import tkinter as tk
from tkinter import messagebox
# --- Main Window ---
root = tk.Tk()
root.title("Login Form")
root.geometry("400x300")
root.config(bg="#f0f0f0")
# --- Functions ---
def login():
user = username_entry.get()
pwd = password_entry.get()
# Example static username & password
if user == "admin" and pwd == "12345":
messagebox.showinfo("Login Success", f"Welcome {user}!")
else:
messagebox.showerror("Error", "Invalid Username or Password")
def reset():
username_entry.delete(0, tk.END)
password_entry.delete(0, tk.END)
# --- Labels and Entries ---
tk.Label(root, text="Login Form", font=("Arial", 20, "bold"), bg="#f0f0f0").pack(pady=20)
frame = tk.Frame(root, bg="#f0f0f0")
frame.pack(pady=10)
tk.Label(frame, text="Username:", font=("Arial", 12), bg="#f0f0f0").grid(row=0, column=0, padx=10, pady=10)
username_entry = tk.Entry(frame, font=("Arial", 12), width=20)
username_entry.grid(row=0, column=1)
tk.Label(frame, text="Password:", font=("Arial", 12), bg="#f0f0f0").grid(row=1, column=0, padx=10, pady=10)
password_entry = tk.Entry(frame, font=("Arial", 12), show="*", width=20)
password_entry.grid(row=1, column=1)
# --- Buttons ---
btn_frame = tk.Frame(root, bg="#f0f0f0")
btn_frame.pack(pady=20)
tk.Button(btn_frame, text="Login", command=login, font=("Arial", 12), bg="#4CAF50", fg="white", width=10).grid(row=0, column=0, padx=10)
tk.Button(btn_frame, text="Reset", command=reset, font=("Arial", 12), bg="#f44336", fg="white", width=10).grid(row=0, column=1, padx=10)
root.mainloop()