import tkinter as tk
from tkinter import messagebox

def book_cab():
    name = entry_name.get()
    pickup = entry_pickup.get()
    drop = entry_drop.get()
    cab_type = cab_var.get()
    agree = agree_var.get()

    if not name or not pickup or not drop:
        messagebox.showwarning("Missing Info", "Please fill all details.")
    elif not agree:
        messagebox.showwarning("Terms Required", "You must agree to the booking terms.")
    else:
        messagebox.showinfo("Booking Confirmed",
                            f"Booking Successful!\\n\\nName: {name}\\nPickup: {pickup}\\nDrop: {drop}\\nCab Type: {cab_type}")

root = tk.Tk()
root.title("Cab/Auto Booking App")
root.geometry("400x450")

# Heading label spanning two columns
tk.Label(root, text="πŸš– Cab/Auto Booking App", font=("Arial", 14, "bold")) \\
    .grid(row=0, column=0, columnspan=2, pady=10)

# Passenger Name
tk.Label(root, text="Passenger 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)

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

# Drop Location
tk.Label(root, text="Drop Location:").grid(row=3, column=0, sticky="w", padx=40, pady=5)
entry_drop = tk.Entry(root, width=30)
entry_drop.grid(row=3, column=1, padx=40, pady=5)

# Cab Type Radio Buttons
tk.Label(root, text="Select Cab Type:").grid(row=4, column=0, sticky="w", padx=40, pady=(10, 0))
cab_var = tk.StringVar(value="Auto")
tk.Radiobutton(root, text="Auto", variable=cab_var, value="Auto") \\
    .grid(row=4, column=1, sticky="w", padx=60)
tk.Radiobutton(root, text="Mini Cab", variable=cab_var, value="Mini Cab") \\
    .grid(row=5, column=1, sticky="w", padx=60)
tk.Radiobutton(root, text="Sedan", variable=cab_var, value="Sedan") \\
    .grid(row=6, column=1, sticky="w", padx=60)
tk.Radiobutton(root, text="SUV", variable=cab_var, value="SUV") \\
    .grid(row=7, column=1, sticky="w", padx=60)

# Terms Checkbox spanning two columns
agree_var = tk.BooleanVar()
tk.Checkbutton(root, text="I agree to the booking terms", variable=agree_var) \\
    .grid(row=8, column=0, columnspan=2, sticky="w", padx=40, pady=10)

# Book Button spanning two columns
tk.Button(root, text="Book Ride", command=book_cab) \\
    .grid(row=9, column=0, columnspan=2, pady=15)

root.mainloop()