import tkinter as tk
from tkinter import messagebox

def register():
    name = entry_name.get()
    age = entry_age.get()
    gender = gender_var.get()
    disease = disease_listbox.get(tk.ACTIVE)
    admitted = admit_var.get()
    if not name or not age or not gender:
        messagebox.showwarning("Input Error", "Please fill all fields.")
    else:
        messagebox.showinfo("Registration Successful",
                            f"Name: {name}\\nAge: {age}\\nGender: {gender}\\nDisease: {disease}\\nAdmitted: {admitted}")

root = tk.Tk()
root.title("Patient Registration Form")
root.geometry("400x500")

# Heading label spanning two columns
tk.Label(root, text="Hospital Patient Registration", font=("Arial", 14, "bold")) \\
    .grid(row=0, column=0, columnspan=2, pady=10)

# Full Name
tk.Label(root, text="Full Name:").grid(row=1, column=0, sticky="w", padx=40, pady=5)
entry_name = tk.Entry(root, width=30)
entry_name.grid(row=1, column=1, padx=40, pady=5)

# Age
tk.Label(root, text="Age:").grid(row=2, column=0, sticky="w", padx=40, pady=5)
entry_age = tk.Entry(root, width=30)
entry_age.grid(row=2, column=1, padx=40, pady=5)

# Gender Radio Buttons
tk.Label(root, text="Gender:").grid(row=3, column=0, sticky="w", padx=40, pady=5)
gender_var = tk.StringVar(value="Male")
tk.Radiobutton(root, text="Male", variable=gender_var, value="Male") \\
    .grid(row=3, column=1, sticky="w", padx=60)
tk.Radiobutton(root, text="Female", variable=gender_var, value="Female") \\
    .grid(row=4, column=1, sticky="w", padx=60)
tk.Radiobutton(root, text="Other", variable=gender_var, value="Other") \\
    .grid(row=5, column=1, sticky="w", padx=60)

# Disease Listbox
tk.Label(root, text="Select Disease:").grid(row=6, column=0, sticky="w", padx=40, pady=(10, 0))
disease_listbox = tk.Listbox(root, height=5, exportselection=False)
for d in ["Fever", "Cold", "Injury", "Diabetes", "Other"]:
    disease_listbox.insert(tk.END, d)
disease_listbox.grid(row=6, column=1, padx=40, pady=(10, 5))

# Admitted Checkbutton
admit_var = tk.StringVar(value="No")
tk.Checkbutton(root, text="Admitted to Hospital", variable=admit_var, onvalue="Yes", offvalue="No") \\
    .grid(row=7, column=0, columnspan=2, sticky="w", padx=40, pady=10)

# Register Button spanning two columns
tk.Button(root, text="Register", command=register) \\
    .grid(row=8, column=0, columnspan=2, pady=20)

root.mainloop()