Python 总日期问题

Python 总日期问题,python,Python,一切正常,但当点击Add/Total按钮计算“总天数”时,我发现以下错误 设置的总天数(绝对值(过期-过期天数)) AttributeError:“str”对象没有属性“days” from tkinter import* 从tkinter导入ttk 随机输入 导入tkinter.messagebox 从日期时间导入日期时间 进口数据库酒店 导入日期时间 导入时间 从datetime导入datetime,timedelta 从tkinter导入菜单 #前端 一流酒店: definit(自我,根

一切正常,但当点击Add/Total按钮计算“总天数”时,我发现以下错误 设置的总天数(绝对值(过期-过期天数)) AttributeError:“str”对象没有属性“days”

from tkinter import*
从tkinter导入ttk 随机输入 导入tkinter.messagebox 从日期时间导入日期时间 进口数据库酒店 导入日期时间 导入时间 从datetime导入datetime,timedelta 从tkinter导入菜单

#前端

一流酒店: definit(自我,根): self.root=根 self.root.title('Elime Guest Inn') self.root.geometry('1350x595+0+0')

#===================标签 self.lblCusID=Label(左框,字体=('arial',12,'bold'),bg='white',text='Customer Ref:',padx=1) self.lblCusID.grid(行=0,列=0,棒=W) self.txtCusID=Entry(LeftFrame,font=('arial',12,'bold'),width=18,textvariable=CusID) self.txtCusID.grid(行=0,列=1,棒=W)

#顶部标签位置=======================

    self.lblTopLabel=Label(RightFrame1, font=('arial',8,'bold'),bg='white',padx=6,pady=10,
                           text='Customer Id\tFullName\tAddress\tIDNo\tIDType\tNationality\tGender\tOccupation\tRoomNo\tCheckInDate\tCheckOutDate\tPhoneNo')
    self.lblTopLabel.grid(row=0,column=0, columnspan=17)

    scrollbar = Scrollbar(RightFrame2)
    scrollbar.grid(row=0,column=0,sticky='ns')
    lstHotel = Listbox(RightFrame2, width=103, height=14,font=('arial',12,'bold'), yscrollcommand=scrollbar.set)
                       
    lstHotel.bind('<<ListboxSelect>>')
    lstHotel.grid(row=0, column=0, padx=7, sticky='nsew')
    scrollbar.config(command = lstHotel.xview)
    self.lblTotalDays=Label(RightFrame3, font=('arial',12,'bold'),bg='white',text='Days:',padx=1)
    self.lblTotalDays.grid(row=0,column=0, stick =W)
    self.txtTotalDays=Entry(RightFrame3, font=('arial',12,'bold'),width=76,textvariable=TotalDays)
    self.txtTotalDays.grid(row=0,column=1, stick =W)

    self.lblExchangeRate=Label(RightFrame3, font=('arial',12,'bold'),bg='white', text='Exchange Rate.:',padx=1)
    self.lblExchangeRate.grid(row=1,column=0, stick =W)
    self.txtExchangeRate=Entry(RightFrame3, font=('arial',12,'bold'),width=76, textvariable=ExchangeRate)
    self.txtExchangeRate.grid(row=1,column=1, stick =W)

    self.lblSubTotal=Label(RightFrame3, font=('arial',12,'bold'),bg='white', text='Sub Total.:',padx=1)
    self.lblSubTotal.grid(row=2,column=0, stick =W)
    self.txtSubTotal=Entry(RightFrame3, font=('arial',12,'bold'),width=76, textvariable=SubTotal)
    self.txtSubTotal.grid(row=2,column=1, stick =W)

    self.lblTotal=Label(RightFrame3, font=('arial',12,'bold'),bg='white', text='Total:',padx=1)
    self.lblTotal.grid(row=3,column=0, stick =W)
    self.txtTotal=Entry(RightFrame3, font=('arial',12,'bold'),width=76, textvariable=Total)
    self.txtTotal.grid(row=3,column=1, stick =W)

    
    self.btnTotalandAddData1 = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Add New Total', command=TotalCostandAddData).grid(row=0,column=0, padx=4)
    
    self.btnDisplay = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Display').grid(row=0,column=1, padx=4)
    
    self.btnUpdate = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Update').grid(row=0,column=2, padx=4)
    
    self.btnDelete = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Delete').grid(row=0,column=3, padx=4)

    self.btnSearch = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Search').grid(row=0,column=4, padx=4)

    self.btnReset = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Reset', command = Reset).grid(row=0,column=5, padx=4)

    self.btnExit = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Exit', command = iExit).grid(row=0,column=6, padx=4)
    
    
               


if __name__=='__main__':
root = Tk()
application = Hotel (root)
root.mainloop()
                    
#钮扣====================================

    self.lblTopLabel=Label(RightFrame1, font=('arial',8,'bold'),bg='white',padx=6,pady=10,
                           text='Customer Id\tFullName\tAddress\tIDNo\tIDType\tNationality\tGender\tOccupation\tRoomNo\tCheckInDate\tCheckOutDate\tPhoneNo')
    self.lblTopLabel.grid(row=0,column=0, columnspan=17)

    scrollbar = Scrollbar(RightFrame2)
    scrollbar.grid(row=0,column=0,sticky='ns')
    lstHotel = Listbox(RightFrame2, width=103, height=14,font=('arial',12,'bold'), yscrollcommand=scrollbar.set)
                       
    lstHotel.bind('<<ListboxSelect>>')
    lstHotel.grid(row=0, column=0, padx=7, sticky='nsew')
    scrollbar.config(command = lstHotel.xview)
    self.lblTotalDays=Label(RightFrame3, font=('arial',12,'bold'),bg='white',text='Days:',padx=1)
    self.lblTotalDays.grid(row=0,column=0, stick =W)
    self.txtTotalDays=Entry(RightFrame3, font=('arial',12,'bold'),width=76,textvariable=TotalDays)
    self.txtTotalDays.grid(row=0,column=1, stick =W)

    self.lblExchangeRate=Label(RightFrame3, font=('arial',12,'bold'),bg='white', text='Exchange Rate.:',padx=1)
    self.lblExchangeRate.grid(row=1,column=0, stick =W)
    self.txtExchangeRate=Entry(RightFrame3, font=('arial',12,'bold'),width=76, textvariable=ExchangeRate)
    self.txtExchangeRate.grid(row=1,column=1, stick =W)

    self.lblSubTotal=Label(RightFrame3, font=('arial',12,'bold'),bg='white', text='Sub Total.:',padx=1)
    self.lblSubTotal.grid(row=2,column=0, stick =W)
    self.txtSubTotal=Entry(RightFrame3, font=('arial',12,'bold'),width=76, textvariable=SubTotal)
    self.txtSubTotal.grid(row=2,column=1, stick =W)

    self.lblTotal=Label(RightFrame3, font=('arial',12,'bold'),bg='white', text='Total:',padx=1)
    self.lblTotal.grid(row=3,column=0, stick =W)
    self.txtTotal=Entry(RightFrame3, font=('arial',12,'bold'),width=76, textvariable=Total)
    self.txtTotal.grid(row=3,column=1, stick =W)

    
    self.btnTotalandAddData1 = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Add New Total', command=TotalCostandAddData).grid(row=0,column=0, padx=4)
    
    self.btnDisplay = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Display').grid(row=0,column=1, padx=4)
    
    self.btnUpdate = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Update').grid(row=0,column=2, padx=4)
    
    self.btnDelete = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Delete').grid(row=0,column=3, padx=4)

    self.btnSearch = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Search').grid(row=0,column=4, padx=4)

    self.btnReset = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Reset', command = Reset).grid(row=0,column=5, padx=4)

    self.btnExit = Button(BottomFrame, pady=1, bd=4, font=('arial',12,'bold'),
                     width=13, height=2, text='Exit', command = iExit).grid(row=0,column=6, padx=4)
    
    
               


if __name__=='__main__':
root = Tk()
application = Hotel (root)
root.mainloop()
                    

First
InDate
是一个字符串,没有属性days。我想您应该使用
indate.days
(记住python是区分大小写的)。其次,如果希望增量时间以天为单位,则应使用.days属性作为间隔,而不是
indate
。将最后一行替换为:

TotalDays.set(abs((outdate - indate).days))

如果没有额外的上下文,你的问题很难理解。您使用的函数/对象不是自解释的,很可能与您的错误有关。
InDate
似乎是一个字符串,因此它没有属性
days
。可能你只是想在最后一行写
indate
outdate
。如果有帮助,我已经发布了我的全部代码,因为你的代码是
TotalDays.set(abs((outdate-indate).days)
,你必须使用
TotalDays.set(abs((outdate-indate).days))
。请注意。您必须使用
indate
outdate
小写是的,简单得像那样=)请将我的答案标记为有用,因为它解决了您的问题