Проблема Tkinter для преобразования IntVar в int - PullRequest
0 голосов
/ 06 апреля 2019

Я делал графический интерфейс «Калькулятор дат» с использованием Tkinter, в котором, если человек вводит сегодняшнюю дату и хочет узнать дату по истечении определенных дней с этой даты, он может узнать это с помощью этого графического интерфейса, например, если я введу дату = 2019-04-05 и Пропустить = 2 дня, тогда он должен вернуть 2019-04-07 в качестве ответа в консоли. Но я получаю сообщение об ошибке, что год 0 находится за пределами допустимого диапазона, пожалуйста, посмотрите на код

import datetime
from tkinter import *
pydi=Tk()
pydi.geometry("720x120")

#Function
def Harsh():
    Date=datetime.date(y,m,d)
    Next=datetime.timedelta(f)
    New=Date+Next
    print(New)

#Label With Grid Packing (One liner)
Year=Label(pydi,text="Enter The Year").grid(row=1,column=1)
Month=Label(pydi,text="Enter The Month").grid(row=2,column=1)
Day=Label(pydi,text="Enter The Day").grid(row=3,column=1)
Skip=Label(pydi,text="Enter Skip Days").grid(row=4,column=1)

#Values
YearValue=IntVar()
MonthValue=IntVar()
DayValue=IntVar()
SkipValue=IntVar()

#Using Get to convert Tkinter IntVar to python int
y=YearValue.get()
m=MonthValue.get()
d=DayValue.get()
f=SkipValue.get()

#Entry Widget
YearEntry=Entry(pydi,textvariable=YearValue).grid(row=1,column=2)
MonthEntry=Entry(pydi,textvariable=MonthValue).grid(row=2,column=2)
DayEntry=Entry(pydi,textvariable=DayValue).grid(row=3,column=2)
SkipEntry=Entry(pydi,textvariable=SkipValue).grid(row=4,column=2)

#Button
Calculate=Button(pydi,bg="black",fg="white",text="Calculate",command=Harsh).grid(row=17,column=2)
pydi.mainloop()

1 Ответ

0 голосов
/ 06 апреля 2019

используйте напрямую

def Harsh():
   #Date=datetime.date(y,m,d)
    Date = datetime.date(YearValue.get(), MonthValue.get(), DayValue.get())
    Next=datetime.timedelta(f)
    New=Date+Next
    print(New)

В любом случае проблема показана ниже,

print (y, m, d) return 0,0,0

#Function
def Harsh():
    print(y,m,d)
    Date=datetime.date(y,m,d)
    Next=datetime.timedelta(f)
    New=Date+Next
    print(New)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...