├── LICENSE.md ├── README.md ├── SECURITY.md ├── Users.db └── index.py /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Aakar Gupta & @computerwala 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute copies of the Software, and 9 | to permit persons to whom the Software is furnished to do so, subject to the 10 | following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | The software should not be sold without any signed consent of the owner. No 16 | copyrights granted. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 22 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 23 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | Footer 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Taxi-Booking-System-Using-Python-GUI-tkinter 2 | This is a basic application to book a taxi by a user. When the project starts user will login with his/her credentials and the user need to give the pick up and drop point to the system and book the ride. 3 | 4 | Technologies used in this project : 5 | 1. Python 6 | 2. Tkinter 7 | 8 | This repository is participating in Hacktoberfest2021. 9 | Submit a Valid Pull Request, Code will be reviewed and merged. 10 | 11 | Happy Hacking!! 12 | 13 | # Requirment 14 | 1. Python 2.x or 3.x 15 | 2. Tkinter library for GUI (Graphical User Interface) 16 | 17 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | | Version | Supported | 5 | | ------- | ------------------ | 6 | | 1.1.0 | :white_check_mark: | 7 | | 1.1.1 | :white_check_mark: | 8 | 9 | ## Reporting a Vulnerability 10 | Contact owner @computerwala 11 | -------------------------------------------------------------------------------- /Users.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/computerwala/Taxi-Booking-System-Using-Python-GUI-tkinter_Hacktoberfest_2021/88c7e4fe3a6d4276daceaf51de1c17ec3ad3b4f9/Users.db -------------------------------------------------------------------------------- /index.py: -------------------------------------------------------------------------------- 1 | from tkinter import * 2 | from tkinter import ttk 3 | import random 4 | import time 5 | import datetime 6 | from tkinter import messagebox as ms 7 | import sqlite3 8 | 9 | 10 | Item4 = 0 11 | 12 | 13 | # make database and users (if not exists already) table at programme start up 14 | with sqlite3.connect('Users.db') as db: 15 | c = db.cursor() 16 | 17 | c.execute('CREATE TABLE IF NOT EXISTS user (username TEXT NOT NULL ,password TEXT NOT NULL)') 18 | db.commit() 19 | db.close() 20 | 21 | #main Class 22 | class user: 23 | def __init__(self,master): 24 | # Window 25 | self.master = master 26 | # Some Usefull variables 27 | self.username = StringVar() 28 | self.password = StringVar() 29 | self.n_username = StringVar() 30 | self.n_password = StringVar() 31 | #Create Widgets 32 | self.widgets() 33 | 34 | #Login Function 35 | def login(self): 36 | #Establish Connection 37 | with sqlite3.connect('Users.db') as db: 38 | c = db.cursor() 39 | 40 | #Find user If there is any take proper action 41 | find_user = ('SELECT * FROM user WHERE username = ? and password = ?') 42 | c.execute(find_user,[(self.username.get()),(self.password.get())]) 43 | result = c.fetchall() 44 | if result: 45 | self.logf.pack_forget() 46 | self.head['text'] = "Welcome, " + self.username.get() 47 | self.head.configure(fg="green") 48 | self.head.pack(fill=X) 49 | application = travel(root) 50 | 51 | else: 52 | ms.showerror('Oops!','Username Not Found.') 53 | 54 | def new_user(self): 55 | #Establish Connection 56 | with sqlite3.connect('Users.db') as db: 57 | c = db.cursor() 58 | 59 | #Find Existing username if any take proper action 60 | find_user = ('SELECT * FROM user WHERE username = ?') 61 | c.execute(find_user,[(self.username.get())]) 62 | if c.fetchall(): 63 | ms.showerror('Error!','Username Already Taken!') 64 | else: 65 | ms.showinfo('Success!','Account Created!') 66 | self.log() 67 | #Create New Account 68 | insert = 'INSERT INTO user(username,password) VALUES(?,?)' 69 | c.execute(insert,[(self.n_username.get()),(self.n_password.get())]) 70 | db.commit() 71 | 72 | #Frame Packing Methords 73 | def log(self): 74 | self.username.set('') 75 | self.password.set('') 76 | self.crf.pack_forget() 77 | self.head['text'] = 'LOGIN' 78 | self.logf.pack() 79 | def cr(self): 80 | self.n_username.set('') 81 | self.n_password.set('') 82 | self.logf.pack_forget() 83 | self.head['text'] = 'Create Account' 84 | self.crf.pack() 85 | 86 | #Draw Widgets 87 | def widgets(self): 88 | self.head = Label(self.master,text = 'LOGIN',font = ('',35),pady = 10) 89 | self.head.pack() 90 | self.logf = Frame(self.master,padx =10,pady = 10) 91 | Label(self.logf,text = 'Username: ',font = ('',20),pady=5,padx=5).grid(sticky = W) 92 | Entry(self.logf,textvariable = self.username,bd = 5,font = ('',15)).grid(row=0,column=1) 93 | Label(self.logf,text = 'Password: ',font = ('',20),pady=5,padx=5).grid(sticky = W) 94 | Entry(self.logf,textvariable = self.password,bd = 5,font = ('',15),show = '*').grid(row=1,column=1) 95 | Button(self.logf,text = ' Login ',bd = 3 ,font = ('',15),padx=5,pady=5,command=self.login).grid() 96 | Button(self.logf,text = ' Create Account ',bd = 3 ,font = ('',15),padx=5,pady=5,command=self.cr).grid(row=2,column=1) 97 | self.logf.pack() 98 | 99 | self.crf = Frame(self.master,padx =10,pady = 10) 100 | Label(self.crf,text = 'Username: ',font = ('',20),pady=5,padx=5).grid(sticky = W) 101 | Entry(self.crf,textvariable = self.n_username,bd = 5,font = ('',15)).grid(row=0,column=1) 102 | Label(self.crf,text = 'Password: ',font = ('',20),pady=5,padx=5).grid(sticky = W) 103 | Entry(self.crf,textvariable = self.n_password,bd = 5,font = ('',15),show = '*').grid(row=1,column=1) 104 | Button(self.crf,text = 'Create Account',bd = 3 ,font = ('',15),padx=5,pady=5,command=self.new_user).grid() 105 | Button(self.crf,text = 'Go to Login',bd = 3 ,font = ('',15),padx=5,pady=5,command=self.log).grid(row=2,column=1) 106 | 107 | class travel: 108 | 109 | def __init__(self,root): 110 | self.root = root 111 | self.root.title("Taxi Booking System In LPU") 112 | self.root.geometry(geometry) 113 | self.root.configure(background='black') 114 | 115 | DateofOrder=StringVar() 116 | DateofOrder.set(time.strftime(" %d / %m / %Y ")) 117 | Receipt_Ref=StringVar() 118 | PaidTax=StringVar() 119 | SubTotal=StringVar() 120 | TotalCost=StringVar() 121 | 122 | var1=IntVar() 123 | var2=IntVar() 124 | var3=IntVar() 125 | var4=IntVar() 126 | journeyType=IntVar() 127 | carType=IntVar() 128 | 129 | varl1=StringVar() 130 | varl2=StringVar() 131 | varl3=StringVar() 132 | reset_counter=0 133 | 134 | 135 | Firstname=StringVar() 136 | Surname=StringVar() 137 | Address=StringVar() 138 | Postcode=StringVar() 139 | Mobile=StringVar() 140 | Telephone=StringVar() 141 | Email=StringVar() 142 | 143 | TaxiTax=StringVar() 144 | Km=StringVar() 145 | Travel_Ins=StringVar() 146 | Luggage=StringVar() 147 | Receipt=StringVar() 148 | 149 | 150 | Standard=StringVar() 151 | PrimeSedan=StringVar() 152 | PremiumSedan=StringVar() 153 | 154 | 155 | TaxiTax.set("0") 156 | Km.set("0") 157 | Travel_Ins.set("0") 158 | Luggage.set("0") 159 | 160 | 161 | Standard.set("0") 162 | PrimeSedan.set("0") 163 | PremiumSedan.set("0") 164 | 165 | 166 | 167 | 168 | 169 | #==========================================Define Functiom================================================== 170 | 171 | def iExit(): 172 | iExit= ms.askyesno("Prompt!","Do you want to exit?") 173 | if iExit > 0: 174 | root.destroy() 175 | return 176 | 177 | def Reset(): 178 | TaxiTax.set("0") 179 | Km.set("0") 180 | Travel_Ins.set("0") 181 | Luggage.set("0") 182 | 183 | Standard.set("0") 184 | PrimeSedan.set("0") 185 | PremiumSedan.set("0") 186 | 187 | Firstname.set("") 188 | Surname.set("") 189 | Address.set("") 190 | Postcode.set("") 191 | Mobile.set("") 192 | Telephone.set("") 193 | Email.set("") 194 | 195 | PaidTax.set("") 196 | SubTotal.set("") 197 | TotalCost.set("") 198 | self.txtReceipt1.delete("1.0",END) 199 | self.txtReceipt2.delete("1.0",END) 200 | 201 | var1.set(0) 202 | var2.set(0) 203 | var3.set(0) 204 | var4.set(0) 205 | journeyType.set(0) 206 | carType.set(0) 207 | varl1.set("0") 208 | varl2.set("0") 209 | varl3.set("0") 210 | 211 | self.cboPickup.current(0) 212 | self.cboDrop.current(0) 213 | self.cboPooling.current(0) 214 | 215 | self.txtTaxiTax.configure(state=DISABLED) 216 | self.txtKm.configure(state=DISABLED) 217 | self.txtTravel_Ins.configure(state=DISABLED) 218 | self.txtLuggage.configure(state=DISABLED) 219 | 220 | self.txtStandard.configure(state=DISABLED) 221 | self.txtPrimeSedan.configure(state=DISABLED) 222 | self.txtPremiumSedan.configure(state=DISABLED) 223 | self.reset_counter=1 224 | 225 | def Receiptt(): 226 | if reset_counter is 0 and Firstname.get()!="" and Surname.get()!="" and Address.get()!="" and Postcode.get()!="" and Mobile.get()!="" and Telephone.get()!="" and Email.get()!="": 227 | self.txtReceipt1.delete("1.0",END) 228 | self.txtReceipt2.delete("1.0",END) 229 | x=random.randint(10853,500831) 230 | randomRef = str(x) 231 | Receipt_Ref.set(randomRef) 232 | 233 | self.txtReceipt1.insert(END,"Receipt Ref:\n") 234 | self.txtReceipt2.insert(END, Receipt_Ref.get() + "\n") 235 | self.txtReceipt1.insert(END,'Date:\n') 236 | self.txtReceipt2.insert(END, DateofOrder.get() + "\n") 237 | self.txtReceipt1.insert(END,'Taxi No:\n') 238 | self.txtReceipt2.insert(END, 'TR ' + Receipt_Ref.get() + " BW\n") 239 | self.txtReceipt1.insert(END,'Firstname:\n') 240 | self.txtReceipt2.insert(END, Firstname.get() + "\n") 241 | self.txtReceipt1.insert(END,'Surname:\n') 242 | self.txtReceipt2.insert(END, Surname.get() + "\n") 243 | self.txtReceipt1.insert(END,'Address:\n') 244 | self.txtReceipt2.insert(END, Address.get() + "\n") 245 | self.txtReceipt1.insert(END,'Postal Code:\n') 246 | self.txtReceipt2.insert(END, Postcode.get() + "\n") 247 | self.txtReceipt1.insert(END,'Telephone:\n') 248 | self.txtReceipt2.insert(END, Telephone.get() + "\n") 249 | self.txtReceipt1.insert(END,'Mobile:\n') 250 | self.txtReceipt2.insert(END, Mobile.get() + "\n") 251 | self.txtReceipt1.insert(END,'Email:\n') 252 | self.txtReceipt2.insert(END, Email.get() + "\n") 253 | self.txtReceipt1.insert(END,'From:\n') 254 | self.txtReceipt2.insert(END, varl1.get() + "\n") 255 | self.txtReceipt1.insert(END,'To:\n') 256 | self.txtReceipt2.insert(END, varl2.get() + "\n") 257 | self.txtReceipt1.insert(END,'Pooling:\n') 258 | self.txtReceipt2.insert(END, varl3.get() + "\n") 259 | self.txtReceipt1.insert(END,'Standard:\n') 260 | self.txtReceipt2.insert(END, Standard.get() + "\n") 261 | self.txtReceipt1.insert(END,'Prime Sedan:\n') 262 | self.txtReceipt2.insert(END, PrimeSedan.get() + "\n") 263 | self.txtReceipt1.insert(END,'Premium Sedan:\n') 264 | self.txtReceipt2.insert(END, PremiumSedan.get() + "\n") 265 | self.txtReceipt1.insert(END,'Paid:\n') 266 | self.txtReceipt2.insert(END, PaidTax.get() + "\n") 267 | self.txtReceipt1.insert(END,'SubTotal:\n') 268 | self.txtReceipt2.insert(END, str(SubTotal.get()) + "\n") 269 | self.txtReceipt1.insert(END,'Total Cost:\n') 270 | self.txtReceipt2.insert(END, str(TotalCost.get())) 271 | 272 | else: 273 | self.txtReceipt1.delete("1.0",END) 274 | self.txtReceipt2.delete("1.0",END) 275 | self.txtReceipt1.insert(END,"\nNo Input") 276 | 277 | 278 | def Taxi_Tax(): 279 | global Item1 280 | if var1.get() == 1: 281 | self.txtTaxiTax.configure(state = NORMAL) 282 | Item1=float(50) 283 | TaxiTax.set("Rs " + str(Item1)) 284 | elif var1.get() == 0: 285 | self.txtTaxiTax.configure(state=DISABLED) 286 | TaxiTax.set("0") 287 | Item1=0 288 | 289 | 290 | def Kilo(): 291 | if var2.get() == 0: 292 | self.txtKm.configure(state=DISABLED) 293 | Km.set("0") 294 | elif var2.get() == 1 and varl1.get() != "" and varl2.get() != "": 295 | self.txtKm.configure(state=NORMAL) 296 | if varl1.get() == "CampusCafe": 297 | switch ={"BoysHostel": 10,"GirlsHostel": 8,"AdmissionBlock":6,"CampusCafe": 0} 298 | Km.set(switch[varl2.get()]) 299 | elif varl1.get() == "BoysHostel": 300 | switch ={"BoysHostel": 0,"GirlsHostel": 2,"AdmissionBlock":5,"CampusCafe": 10} 301 | Km.set(switch[varl2.get()]) 302 | elif varl1.get() == "GirlsHostel": 303 | switch ={"BoysHostel": 2,"GirlsHostel": 0,"AdmissionBlock":3,"CampusCafe": 8} 304 | Km.set(switch[varl2.get()]) 305 | elif varl1.get() == "AdmissionBlock": 306 | switch ={"BoysHostel": 5,"GirlsHostel": 3,"AdmissionBlock":0,"CampusCafe": 6} 307 | Km.set(switch[varl2.get()]) 308 | 309 | 310 | def Travelling(): 311 | global Item3 312 | if var3.get() == 1: 313 | self.txtTravel_Ins.configure(state = NORMAL) 314 | Item3=float(10) 315 | Travel_Ins.set("Rs " + str(Item3)) 316 | elif var3.get() == 0: 317 | self.txtTravel_Ins.configure(state = DISABLED) 318 | Travel_Ins.set("0") 319 | Item3=0 320 | 321 | 322 | def Lug(): 323 | global Item4 324 | if (var4.get()==1): 325 | self.txtLuggage.configure(state = NORMAL) 326 | Item4=float(30) 327 | Luggage.set("Rs "+ str(Item4)) 328 | elif var4.get()== 0: 329 | self.txtLuggage.configure(state = DISABLED) 330 | Luggage.set("0") 331 | Item4=0 332 | 333 | 334 | def selectCar(): 335 | global Item5 336 | if carType.get() == 1: 337 | self.txtPrimeSedan.configure(state = DISABLED) 338 | PrimeSedan.set("0") 339 | self.txtPremiumSedan.configure(state = DISABLED) 340 | PremiumSedan.set("0") 341 | self.txtStandard.configure(state = NORMAL) 342 | Item5 = float(8) 343 | Standard.set("Rs "+ str(Item5)) 344 | elif carType.get() == 2: 345 | self.txtStandard.configure(state =DISABLED) 346 | Standard.set("0") 347 | self.txtPremiumSedan.configure(state = DISABLED) 348 | PremiumSedan.set("0") 349 | self.txtPrimeSedan.configure(state = NORMAL) 350 | Item5 = float(10) 351 | PrimeSedan.set("Rs "+ str(Item5)) 352 | else: 353 | self.txtStandard.configure(state =DISABLED) 354 | Standard.set("0") 355 | self.txtPrimeSedan.configure(state = DISABLED) 356 | PrimeSedan.set("0") 357 | self.txtPremiumSedan.configure(state = NORMAL) 358 | Item5 = float(15) 359 | PremiumSedan.set("Rs "+ str(Item5)) 360 | 361 | 362 | def Total_Paid(): 363 | if ((var1.get() == 1 and var2.get() == 1 and var3.get() == 1 or var4.get() == 1) and carType.get() != 0 and journeyType.get() != 0 and (varl1.get() != "" and varl2.get() !="")): 364 | if journeyType.get()==1: 365 | Item2=Km.get() 366 | Cost_of_fare = (Item1+(float(Item2)*Item5)+Item3+Item4) 367 | 368 | Tax = "Rs " + str('%.2f'%((Cost_of_fare) *0.09)) 369 | ST = "Rs " + str('%.2f'%((Cost_of_fare))) 370 | TT = "Rs " + str('%.2f'%(Cost_of_fare+((Cost_of_fare)*0.9))) 371 | elif journeyType.get()==2: 372 | Item2=Km.get() 373 | Cost_of_fare = (Item1+(float(Item2)*Item5)*1.5+Item3+Item4) 374 | 375 | Tax = "Rs " + str('%.2f'%((Cost_of_fare) *0.09)) 376 | ST = "Rs " + str('%.2f'%((Cost_of_fare))) 377 | TT = "Rs " + str('%.2f'%(Cost_of_fare+((Cost_of_fare)*0.9))) 378 | else: 379 | Item2=Km.get() 380 | Cost_of_fare = (Item1+(float(Item2)*Item5)*2+Item3+Item4) 381 | 382 | Tax = "Rs " + str('%.2f'%((Cost_of_fare) *0.09)) 383 | ST = "Rs " + str('%.2f'%((Cost_of_fare))) 384 | TT = "Rs " + str('%.2f'%(Cost_of_fare+((Cost_of_fare)*0.9))) 385 | 386 | PaidTax.set(Tax) 387 | SubTotal.set(ST) 388 | TotalCost.set(TT) 389 | else: 390 | w = ms.showwarning("Error !","Invalid Input\nPlease try again !!!") 391 | 392 | 393 | 394 | #================================================mainframe======================================================================== 395 | 396 | MainFrame=Frame(self.root) 397 | MainFrame.pack(fill=BOTH,expand=True) 398 | 399 | Tops = Frame(MainFrame, bd=20, width=1350,relief=RIDGE) 400 | Tops.pack(side=TOP,fill=BOTH,expand=True) 401 | 402 | self.lblTitle=Label(Tops,font=('arial',70,'bold'),text=" Taxi Booking System in LPU ") 403 | self.lblTitle.grid() 404 | 405 | #================================================customerframedetail============================================================= 406 | CustomerDetailsFrame=LabelFrame(MainFrame, width=1350,height=500,bd=20, pady=5, relief=RIDGE) 407 | CustomerDetailsFrame.pack(side=BOTTOM,fill=BOTH,expand=True) 408 | 409 | FrameDetails=Frame(CustomerDetailsFrame, width=880,height=400,bd=10, relief=RIDGE) 410 | FrameDetails.pack(side=LEFT,fill=BOTH,expand=True) 411 | 412 | CustomerName=LabelFrame(FrameDetails, width=150,height=250,bd=10, font=('arial',12,'bold'),text="Customer Name", relief=RIDGE) 413 | CustomerName.grid(row=0,column=0) 414 | 415 | TravelFrame = LabelFrame(FrameDetails,bd=10, width=300,height=250, font=('arial',12,'bold'),text="Booking Detail", relief=RIDGE) 416 | TravelFrame.grid(row=0,column=1) 417 | 418 | Book_Frame=LabelFrame(FrameDetails,width=300,height=150,relief=FLAT) 419 | Book_Frame.grid(row=1,column=0) 420 | 421 | CostFrame = LabelFrame(FrameDetails,width=150,height=150,bd=5,relief=FLAT) 422 | CostFrame.grid(row=1,column=1) 423 | 424 | 425 | #===============================================recipt====================================================================== 426 | Receipt_BottonFrame=LabelFrame(CustomerDetailsFrame,bd=10, width=450,height=400, relief=RIDGE) 427 | Receipt_BottonFrame.pack(side=RIGHT,fill=BOTH,expand=True) 428 | 429 | ReceiptFrame=LabelFrame(Receipt_BottonFrame, width=350,height=300, font=('arial',12,'bold'),text="Receipt", relief=RIDGE) 430 | ReceiptFrame.grid(row=0,column=0) 431 | 432 | ButtonFrame=LabelFrame(Receipt_BottonFrame, width=350,height=100, relief=RIDGE) 433 | ButtonFrame.grid(row=1,column=0) 434 | #=========================================================CustomerName==================================================== 435 | 436 | self.lblFirstname=Label(CustomerName,font=('arial',14,'bold'),text="Firstname",bd=7) 437 | self.lblFirstname.grid(row=0,column=0,sticky=W) 438 | self.txtFirstname=Entry(CustomerName,font=('arial',14,'bold'),textvariable=Firstname,bd=7,insertwidth=2,justify=RIGHT) 439 | self.txtFirstname.grid(row=0,column=1) 440 | 441 | 442 | self.lblSurname=Label(CustomerName,font=('arial',14,'bold'),text="Surname",bd=7) 443 | self.lblSurname.grid(row=1,column=0,sticky=W) 444 | self.txtSurname=Entry(CustomerName,font=('arial',14,'bold'),textvariable=Surname,bd=7,insertwidth=2,justify=RIGHT) 445 | self.txtSurname.grid(row=1,column=1,sticky=W) 446 | 447 | 448 | self.lblAddress=Label(CustomerName,font=('arial',14,'bold'),text="Address",bd=7) 449 | self.lblAddress.grid(row=2,column=0,sticky=W) 450 | self.txtAddress=Entry(CustomerName,font=('arial',14,'bold'),textvariable=Address,bd=7,insertwidth=2,justify=RIGHT) 451 | self.txtAddress.grid(row=2,column=1) 452 | 453 | 454 | self.lblPostcode=Label(CustomerName,font=('arial',14,'bold'),text="Postcode",bd=7) 455 | self.lblPostcode.grid(row=3,column=0,sticky=W) 456 | self.txtPostcode=Entry(CustomerName,font=('arial',14,'bold'),textvariable=Postcode,bd=7,insertwidth=2,justify=RIGHT) 457 | self.txtPostcode.grid(row=3,column=1) 458 | 459 | 460 | self.lblTelephone=Label(CustomerName,font=('arial',14,'bold'),text="Telephone",bd=7) 461 | self.lblTelephone.grid(row=4,column=0,sticky=W) 462 | self.txtTelephone=Entry(CustomerName,font=('arial',14,'bold'),textvariable=Telephone,bd=7,insertwidth=2,justify=RIGHT) 463 | self.txtTelephone.grid(row=4,column=1) 464 | 465 | self.lblMobile=Label(CustomerName,font=('arial',14,'bold'),text="Mobile",bd=7) 466 | self.lblMobile.grid(row=5,column=0,sticky=W) 467 | self.txtMobile=Entry(CustomerName,font=('arial',14,'bold'),textvariable=Mobile,bd=7,insertwidth=2,justify=RIGHT) 468 | self.txtMobile.grid(row=5,column=1) 469 | 470 | self.lblEmail=Label(CustomerName,font=('arial',14,'bold'),text="Email",bd=7) 471 | self.lblEmail.grid(row=6,column=0,sticky=W) 472 | self.txtEmail=Entry(CustomerName,font=('arial',14,'bold'),textvariable=Email,bd=7,insertwidth=2,justify=RIGHT) 473 | self.txtEmail.grid(row=6,column=1) 474 | 475 | 476 | #===============================================Taxi Information============================================================== 477 | self.lblPickup=Label(TravelFrame,font=('arial',14,'bold'),text="Pickup",bd=7) 478 | self.lblPickup.grid(row=0,column=0,sticky=W) 479 | 480 | self.cboPickup =ttk.Combobox(TravelFrame, textvariable = varl1 , state='readonly', font=('arial',20,'bold'), width=14) 481 | self.cboPickup['value']=('','CampusCafe','AdmissionBlock','GirlsHostel','BoysHostel') 482 | self.cboPickup.current(0) 483 | self.cboPickup.grid(row=0,column=1) 484 | 485 | 486 | self.lblDrop=Label(TravelFrame,font=('arial',14,'bold'),text="Drop",bd=7) 487 | self.lblDrop.grid(row=1,column=0,sticky=W) 488 | 489 | self.cboDrop =ttk.Combobox(TravelFrame, textvariable = varl2 , state='readonly', font=('arial',20,'bold'), width=14) 490 | self.cboDrop['value']=('','BoysHostel','GirlsHostel','CampusCafe','AdmissionBlock') 491 | self.cboDrop.current(0) 492 | self.cboDrop.grid(row=1,column=1) 493 | 494 | self.lblPooling=Label(TravelFrame,font=('arial',14,'bold'),text="Pooling",bd=7) 495 | self.lblPooling.grid(row=2,column=0,sticky=W) 496 | 497 | self.cboPooling =ttk.Combobox(TravelFrame, textvariable = varl3 , state='readonly', font=('arial',20,'bold'), width=14) 498 | self.cboPooling['value']=('','1','2','3','4') 499 | self.cboPooling.current(1) 500 | self.cboPooling.grid(row=2,column=1) 501 | 502 | #===============================================Taxi Information============================================================== 503 | 504 | self.chkTaxiTax=Checkbutton(TravelFrame,text="Taxi Tax(Base Charge) *",variable = var1, onvalue=1, offvalue=0,font=('arial',16,'bold'),command=Taxi_Tax).grid(row=3, column=0, sticky=W) 505 | self.txtTaxiTax=Label(TravelFrame,font=('arial',14,'bold'),textvariable=TaxiTax,bd=6,width=18,bg="white",state= DISABLED,justify=RIGHT,relief=SUNKEN) 506 | self.txtTaxiTax.grid(row=3,column=1) 507 | 508 | 509 | self.chkKm=Checkbutton(TravelFrame,text="Distance(KMs) *",variable = var2, onvalue=1, offvalue=0,font=('arial',16,'bold'),command=Kilo).grid(row=4, column=0, sticky=W) 510 | self.txtKm=Label(TravelFrame,font=('arial',14,'bold'),textvariable=Km,bd=6,width=18,bg="white",state= DISABLED,justify=RIGHT,relief=SUNKEN,highlightthickness=0) 511 | self.txtKm.grid(row=4,column=1) 512 | 513 | self.chkTravel_Ins=Checkbutton(TravelFrame,text="Travelling Insurance *",variable = var3, onvalue=1, offvalue=0,font=('arial',16,'bold'),command=Travelling).grid(row=5, column=0, sticky=W) 514 | self.txtTravel_Ins=Label(TravelFrame,font=('arial',14,'bold'),textvariable=Travel_Ins,bd=6,width=18,bg="white",state= DISABLED,justify=RIGHT,relief=SUNKEN) 515 | self.txtTravel_Ins.grid(row=5,column=1) 516 | 517 | 518 | self.chkLuggage=Checkbutton(TravelFrame,text="Extra Luggage",variable = var4, onvalue=1, offvalue=0,font=('arial',16,'bold'),command=Lug).grid(row=6, column=0, sticky=W) 519 | self.txtLuggage=Label(TravelFrame,font=('arial',14,'bold'),textvariable=Luggage,bd=6,width=18,bg="white",state= DISABLED,justify=RIGHT,relief=SUNKEN) 520 | self.txtLuggage.grid(row=6,column=1) 521 | 522 | #=================================payment information =========================================================================== 523 | 524 | self.lblPaidTax=Label(CostFrame,font=('arial',14,'bold'),text="Paid Tax\t\t",bd=7) 525 | self.lblPaidTax.grid(row=0,column=2,sticky=W) 526 | self.txtPaidTax = Label(CostFrame,font=('arial',14,'bold'),textvariable=PaidTax,bd=7, width=26, justify=RIGHT,bg="white",relief=SUNKEN) 527 | self.txtPaidTax.grid(row=0,column=3) 528 | 529 | 530 | 531 | self.lblSubTotal=Label(CostFrame,font=('arial',14,'bold'),text="Sub Total",bd=7) 532 | self.lblSubTotal.grid(row=1,column=2,sticky=W) 533 | self.txtSubTotal = Label(CostFrame,font=('arial',14,'bold'),textvariable=SubTotal,bd=7, width=26, justify=RIGHT,bg="white",relief=SUNKEN) 534 | self.txtSubTotal.grid(row=1,column=3) 535 | 536 | 537 | 538 | self.lblTotalCost=Label(CostFrame,font=('arial',14,'bold'),text="Total Cost",bd=7) 539 | self.lblTotalCost.grid(row=2,column=2,sticky=W) 540 | self.txtTotalCost = Label(CostFrame,font=('arial',14,'bold'),textvariable=TotalCost,bd=7, width=26, justify=RIGHT,bg="white",relief=SUNKEN) 541 | self.txtTotalCost.grid(row=2,column=3) 542 | 543 | #==========================================================taxiselect======================================================================= 544 | 545 | self.chkStandard=Radiobutton(Book_Frame,text="Standard",value=1,variable = carType,font=('arial',14,'bold'),command=selectCar).grid(row=0, column=0, sticky=W) 546 | self.txtStandard = Label(Book_Frame,font=('arial',14,'bold'),width =7,textvariable=Standard,bd=5, state= DISABLED, justify=RIGHT,bg="white",relief=SUNKEN) 547 | self.txtStandard.grid(row=0,column=1) 548 | 549 | 550 | self.chkPrimeSedand=Radiobutton(Book_Frame,text="PrimeSedan",value=2,variable = carType,font=('arial',14,'bold'),command=selectCar).grid(row=1, column=0, sticky=W) 551 | self.txtPrimeSedan= Label(Book_Frame,font=('arial',14,'bold'),width =7,textvariable=PrimeSedan,bd=5, state= DISABLED, justify=RIGHT,bg="white",relief=SUNKEN) 552 | self.txtPrimeSedan.grid(row=1,column=1) 553 | 554 | 555 | self.chkPremiumSedan = Radiobutton(Book_Frame,text="PremiumSedan",value=3,variable = carType,font=('arial',14,'bold'),command=selectCar).grid(row=2, column=0) 556 | self.txtPremiumSedan = Label(Book_Frame,font=('arial',14,'bold'),width =7,textvariable=PremiumSedan,bd=5, state= DISABLED, justify=RIGHT,bg="white",relief=SUNKEN) 557 | self.txtPremiumSedan.grid(row=2,column=1) 558 | 559 | self.chkSingle =Radiobutton(Book_Frame,text="Single",value=1,variable = journeyType,font=('arial',14,'bold')).grid(row=0, column=2, sticky=W) 560 | self.chkReturn =Radiobutton(Book_Frame,text="Return",value=2,variable = journeyType,font=('arial',14,'bold')).grid(row=1, column=2, sticky=W) 561 | self.chkSpecialsNeeds =Radiobutton(Book_Frame,text="SpecialNeeds",value=3,variable = journeyType,font=('arial',14,'bold')).grid(row=2, column=2, sticky=W) 562 | 563 | 564 | #=======================================Recipt==================================================================================== 565 | 566 | self.txtReceipt1 = Text(ReceiptFrame,width = 22, height = 21,font=('arial',10,'bold'),borderwidth=0) 567 | self.txtReceipt1.grid(row=0,column=0,columnspan=2) 568 | self.txtReceipt2 = Text(ReceiptFrame,width = 22, height = 21,font=('arial',10,'bold'),borderwidth=0) 569 | self.txtReceipt2.grid(row=0,column=2,columnspan=2) 570 | 571 | 572 | #======================================Button======================================================================================== 573 | 574 | self.btnTotal = Button(ButtonFrame,padx=18,bd=7,font=('arial',11,'bold'),width = 2,text='Total',command=Total_Paid).grid(row=0,column=0) 575 | self.btnReceipt = Button(ButtonFrame,padx=18,bd=7,font=('arial',11,'bold'),width = 2,text='Receipt',command=Receiptt).grid(row=0,column=1) 576 | self.btnReset = Button(ButtonFrame,padx=18,bd=7,font=('arial',11,'bold'),width = 2,text='Reset',command=Reset).grid(row=0,column=2) 577 | self.btnExit = Button(ButtonFrame,padx=18,bd=7,font=('arial',11,'bold'),width = 2,text='Exit', command=iExit).grid(row=0,column=3) 578 | 579 | #==================================================================================================================================== 580 | 581 | 582 | if __name__=='__main__': 583 | root = Tk() 584 | 585 | #=========================================== Getting Screen Width ================================================================== 586 | w = root.winfo_screenwidth() 587 | h = root.winfo_screenheight() 588 | geometry="%dx%d+%d+%d"%(w,h,0,0) 589 | 590 | root.geometry("500x300+320+200") 591 | root.title('Login Form') 592 | application = user(root) 593 | root.mainloop() 594 | 595 | --------------------------------------------------------------------------------