Я сделал некоторые изменения:
- использование
self.myvar
вместо self.var1
, потому что это должен быть StringVar, а не IntVar - , установить переменную
NoofDaysRenting
с фиктивным значением "22222", в противном случае у меня была ошибка - передать аргумент
event
в вашу функцию Vehicle
, чтобы правильно связать его с списком - У меня было 2 строки обновите значение
txtWeeklyCost
, я позволю вам сделать то же самое для всех остальных полей ввода
И я советую вам очистить код, выполняя несколько классов, а не весь код в init function:)
from tkinter import *
from tkinter import ttk
import random
import datetime
from tkinter import messagebox
class Window:
def __init__(self,root):
self.root = root
self.root.title("Car Rental Service")
self.root.geometry("1350x700+0+0")
self.var1 = 0
self.var2 = 0
self.var3 = 0
self.var4 = 0
self.var5 = 0
self.var6 = 0
self.var7 = 0
self.var8 = 0
self.myvar = StringVar()
def Vehicle(event=None):
print('self.myvar.get():', self.myvar.get())
print('event.widget.get():', event.widget.get())
values = self.myvar.get()
values =str(self.cboSelectVehicleType.get())
vtype = values
NoofDaysRenting.set("22")
if vtype =="Car":
KmL.set("10")
NumberOfDoors.set("4")
NumberOfPassengers.set("5")
NumberOfBeds.set("0")
PlateNumber.set("152-C-854")
DailyCost.set("20")
WeeklyCost.set("95")
n = float(DailyCost.get())
s = float( NoofDaysRenting.get())
price = (n*s)
TC = str('%.2f'%(price))
Total.set(TC)
elif vtype =="Van":
KmL.set("8")
NumberOfDoors.set("3")
NumberOfPassengers.set("3")
NumberOfBeds.set("0")
PlateNumber.set("142-G-511")
DailyCost.set("45")
WeeklyCost.set("260")
n = float(DailyCost.get())
s = float( NoofDaysRenting.get())
price = (n*s)
TC = str('%.2f'%(price))
Total.set(TC)
elif vtype =="Caravans":
KmL.set("8")
NumberOfDoors.set("0")
NumberOfPassengers.set("0")
NumberOfBeds.set("4")
PlateNumber.set("131-G-111")
DailyCost.set("50")
WeeklyCost.set("350")
n = float(DailyCost.get())
s = float( NoofDaysRenting.get())
price = (n*s)
TC = str('%.2f'%(price))
Total.set(TC)
self.txtWeeklyCost.delete(0, END)
self.txtWeeklyCost.insert(END, WeeklyCost.get())
#===================================Frame==================================
Mainframe = Frame(self.root, width =1350, height=700, bd=20, relief="raise")
Mainframe.grid()
LeftMainframe = Frame(Mainframe, width =1000, height=650, bd=8, relief="raise")
LeftMainframe.pack(side=LEFT)
RightMainframe = Frame(Mainframe, width =350, height=650, bd=8, relief="raise")
RightMainframe.pack(side=RIGHT)
#===================================Div_Frame==================================
LeftMainframe1 = Frame(LeftMainframe, width =1000, height=225, bd=8, relief="raise")
LeftMainframe1.pack(side=TOP)
LeftMainframe2 = Frame(LeftMainframe, width =1000, height=225, bd=8, relief="raise")
LeftMainframe2.pack(side=TOP)
LeftMainframe3 = Frame(LeftMainframe, width =1000, height=100, bd=8, relief="raise")
LeftMainframe3.pack(side=TOP)
LeftMainframe4 = Frame(LeftMainframe, width =1000, height=100, bd=8, relief="raise")
LeftMainframe4.pack(side=TOP)
RightMainframe1 = Frame(RightMainframe, width =350, height=325, bd=8, relief="raise")
RightMainframe1.pack(side=TOP)
RightMainframe2 = Frame(RightMainframe, width =350, height=325, bd=8, relief="raise")
RightMainframe2.pack(side=BOTTOM)
#===================================Variable==================================
self.var1 = IntVar()
self.var2 = IntVar()
self.var3 = IntVar()
self.var4 = IntVar()
self.var5 = IntVar()
SelectVehicleType = StringVar()
SelectMake = StringVar()
Model = StringVar()
KmL = StringVar()
NumberOfDoors = StringVar()
NumberOfPassengers = StringVar()
NumberOfBeds = StringVar()
PlateNumber = StringVar()
DailyCost = StringVar()
WeeklyCost = StringVar()
WeekendCost = StringVar()
Total = StringVar()
CustomerID = StringVar()
NoofDaysRenting = StringVar()
def Reset():
self.var1.set(0)
self.var2.set(0)
self.var3.set(0)
self.var4.set(0)
self.var5.set(0)
self.var6.set(0)
self.var7.set(0)
self.var8.set(0)
SelectVehicleType.set("")
SelectMake.set("")
Model.set("")
KmL.set("")
NumberOfDoors.set("")
NumberOfPassengers.set("")
NumberOfBeds.set("")
PlateNumber.set("")
DailyCost.set("")
WeeklyCost.set("")
WeekendCost.set("")
Total.set("")
CustomerID.set("")
InvoiceID.set("")
return Reset
#------------------------------------LeftmainFrame2----------------------------------
self.lblSelectVehicleType = Label(LeftMainframe2, font=('arial', 10, 'bold'), text="Select VehicleType", bd=8)
self.lblSelectVehicleType.grid(row=0, column=0)
# self.cboSelectVehicleType =ttk.Combobox(LeftMainframe2, textvariable=self.var1, state='readonly', font=('arial', 10, 'bold'), width=25, justify='left')
self.cboSelectVehicleType =ttk.Combobox(LeftMainframe2, textvariable=self.myvar, state='readonly', font=('arial', 10, 'bold'), width=25, justify='left')
self.cboSelectVehicleType.bind("<<ComboboxSelected>>", Vehicle)
# self.cboSelectVehicleType.bind("<<ComboboxSelected>>", callback)
self.cboSelectVehicleType['value']=('','Car','Van','Caravans')
self.cboSelectVehicleType.current(0)
self.cboSelectVehicleType.grid(row=0, column=1)
self.lblSelectMake = Label(LeftMainframe2, font=('arial', 10, 'bold'), text="Select Make", bd=8)
self.lblSelectMake.grid(row=0, column=2)
self.cboSelectMake =ttk.Combobox(LeftMainframe2, textvariable=self.var2, state='readonly', font=('arial', 10, 'bold'), width=25, justify='left')
self.cboSelectMake['value']=('','Audi A5','Ford fiesta','Toyota Corrolla','Ford focus','Renault Clio''Renault Other','Citroen Berlingo','Peugot Partner''Renault C','Citroen B','Peugot P',)
self.cboSelectMake.current(0)
self.cboSelectMake.grid(row=0, column=3)
self.lblModel = Label(LeftMainframe2, font=('arial', 10, 'bold'), text="Model", bd=8)
self.lblModel.grid(row=0, column=4)
self.txtModel = Entry(LeftMainframe2, font=('arial', 10, 'bold'), bd=15, width=25, justify='left')
self.txtModel.grid(row=0, column=5)
self.lblKmL = Label(LeftMainframe2, font=('arial', 10, 'bold'), text="Km/L", bd=8)
self.lblKmL.grid(row=1, column=0)
self.txtKmL = Entry(LeftMainframe2, font=('arial', 10, 'bold'), bd=15, width=25, justify='left')
self.txtKmL.grid(row=1, column=1)
self.lblNumberOfBeds = Label(LeftMainframe2, font=('arial', 10, 'bold'), text="Number Of Beds", bd=8)
self.lblNumberOfBeds.grid(row=1, column=2)
self.txtNumberOfBeds = Entry(LeftMainframe2, font=('arial', 10, 'bold'), bd=15, width=25, justify='left')
self.txtNumberOfBeds.grid(row=1, column=3)
self.lblPlateNumber = Label(LeftMainframe2, font=('arial', 10, 'bold'), text="PlateNumber", bd=8)
self.lblPlateNumber.grid(row=1, column=4)
self.txtPlateNumber = Entry(LeftMainframe2, font=('arial', 10, 'bold'), bd=15, width=25, justify='left')
self.txtPlateNumber.grid(row=1, column=5)
self.lblNumberOfPassengers = Label(LeftMainframe2, font=('arial', 10, 'bold'), text="Number Of Passengers", bd=8)
self.lblNumberOfPassengers.grid(row=2, column=0)
self.txtNumberOfPassengers = Entry(LeftMainframe2, font=('arial', 10, 'bold'), bd=15, width=25, justify='left')
self.txtNumberOfPassengers.grid(row=2, column=1)
self.lblDailyCost = Label(LeftMainframe2, font=('arial', 10, 'bold'), text="Daily Cost", bd=8)
self.lblDailyCost.grid(row=2, column=2)
self.txtDailyCost = Entry(LeftMainframe2, font=('arial', 10, 'bold'), bd=15, width=25, justify='left')
self.txtDailyCost.grid(row=2, column=3)
self.lblWeeklyCost = Label(LeftMainframe2, font=('arial', 10, 'bold'), text="Weekly Cost", bd=8)
self.lblWeeklyCost.grid(row=2, column=4)
self.txtWeeklyCost = Entry(LeftMainframe2, font=('arial', 10, 'bold'), bd=15, width=25, justify='left')
self.txtWeeklyCost.grid(row=2, column=5)
self.lblWeekendCost = Label(LeftMainframe2, font=('arial', 10, 'bold'), text=" Weekend Cost", bd=8)
self.lblWeekendCost.grid(row=3, column=0)
self.txtWeekendCost = Entry(LeftMainframe2, font=('arial', 10, 'bold'), bd=15, width=25, justify='left')
self.txtWeekendCost.grid(row=3, column=1)
#----------------------------------------Leftmainframe4------------------------------
self.btnTotal=Button(LeftMainframe4, text='Total', padx=8, pady=8, bd=8, fg="blue", font=('arial', 13, 'bold'), width= 21, height=1,).grid(row=0, column=0)
self.btnReceipt=Button(LeftMainframe4, text='Receipt', padx=8, pady=8, bd=8, fg="green", font=('arial', 13, 'bold'), width= 21, height=1,).grid(row=0, column=1)
self.btnReset=Button(LeftMainframe4, text="Reset", command=Reset, padx=8, pady=8, bd=8, fg="blue", font=('arial', 13, 'bold'), width= 21, height=1,).grid(row=0, column=2)
if __name__ =='__main__':
root= Tk()
application = Window(root)
root.mainloop()