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
Post a Comment