Bus Booking Application using Tkinter (Python GUI)

PROGRAM:

import tkinter as tk

from tkinter import messagebox, ttk

from datetime import date

bus_data = [{"bus_name": "SRS Travels", "time": "9:00 AM", "price": 500},

    {"bus_name": "VRL Travels", "time": "1:00 PM", "price": 550},

    {"bus_name": "KSRTC", "time": "6:00 PM", "price": 450},]

def search_buses():

    source = source_var.get()

    dest = dest_var.get()

    travel_date = date_var.get()


    if source == dest or not (source and dest and travel_date):

        messagebox.showwarning("Missing Info", "Please fill all fields properly.")

        return

    for widget in results_frame.winfo_children():

        widget.destroy()

    tk.Label(results_frame, text=f"Available buses from {source} to {dest} on {travel_date}",

             font=('Arial', 12, 'bold')).pack(pady=5)

    for bus in bus_data:

        bus_info = f"{bus['bus_name']} - {bus['time']} - ₹{bus['price']}"

        btn = tk.Button(results_frame, text=bus_info, command=lambda b=bus: book_ticket(b))

        btn.pack(pady=2, fill="x")

def book_ticket(bus):

    messagebox.showinfo("Booking Confirmed",

                        f"Ticket booked successfully!\n"

                        f"Bus: {bus['bus_name']}\n"

                        f"Time: {bus['time']}\n"

                        f"Price: ₹{bus['price']}")

root = tk.Tk()

root.title("Bus Booking App")

root.geometry("500x600")

input_frame = tk.Frame(root)

input_frame.pack(pady=20)

tk.Label(input_frame, text="Source:").grid(row=0, column=0, padx=10, pady=5)

source_var = tk.StringVar()

source_entry = ttk.Combobox(input_frame, textvariable=source_var,

                            values=['Bangalore', 'Chennai', 'Trichy', 'Hyderabad'])

source_entry.grid(row=0, column=1)

tk.Label(input_frame, text="Destination:").grid(row=1, column=0, padx=10, pady=5)

dest_var = tk.StringVar()

dest_entry = ttk.Combobox(input_frame, textvariable=dest_var,

                          values=['Bangalore', 'Chennai', 'Trichy', 'Hyderabad'])

dest_entry.grid(row=1, column=1)

tk.Label(input_frame, text="Date (YYYY-MM-DD):").grid(row=2, column=0, padx=10, pady=5)

date_var = tk.StringVar(value=str(date.today()))

date_entry = tk.Entry(input_frame, textvariable=date_var)

date_entry.grid(row=2, column=1)

search_btn = tk.Button(input_frame, text="Search Buses", command=search_buses)

search_btn.grid(row=3, columnspan=2, pady=10)

results_frame = tk.Frame(root)

results_frame.pack(fill="both", expand=True, padx=20, pady=10)

root.mainloop()

OUTPUT:


 

Comments

Popular posts from this blog

ATM Simulation using Python and Tkinter GUI

Healthcare Chatbot Using Tkinter GUI in Python