在代码中键入错误,datetime.date,未找到必需参数'month'(pos 2)

时间:2017-04-25 12:00:31

标签: python

我在tkinter程序中使用datetime时遇到问题。 问题看起来就在这一行:

  user = Person('User', datetime.date(int(year_entry.get())), (int(month_entry.get())), (int(day_entry.get())))

完整代码:

    import datetime 
    import tkinter as tk

    # GUI
    window = tk.Tk()
    window.geometry('200x400')
    window.title('Age calculator')

    info_label = tk.Label(text='Calculate your age!')
    info_label.grid(column=1, row=0)


    year_label = tk.Label(text='Year')
    year_label.grid(column=0, row=1)

    month_label = tk.Label(text='Month')
    month_label.grid(column=0, row=2)

    day_label = tk.Label(text='Day')
    day_label.grid(column=0, row=3)

    year_entry = tk.Entry()
    year_entry.grid(column=1, row=1)

    month_entry = tk.Entry()
    month_entry.grid(column=1, row=2)

    day_entry = tk.Entry()
    day_entry.grid(column=1, row=3)

    def calculate_age():
        print(year_entry.get())
        print(month_entry.get())
        print(day_entry.get())
        user = Person('User', datetime.date(int(year_entry.get())), (int(month_entry.get())), (int(day_entry.get())))

        print(user.age())
        print('klick!')

        text_answer = tk.Text(master=window, height=20, widt=30)
        text_answer.grid(column=1, row=5)
        text_answer.insert(tk.END, 'Banana!')


    calc_button = tk.Button(text='Calculate!', command=calculate_age)
    calc_button.grid(column=1, row=4)


       class Person:

           def __init__(self, name, birthdate):
               self.name = name
               self.birthdate = birthdate

           def age(self):
               today = datetime.date.today()
               age = today.year - self.birthdate.year
               return age

window.mainloop()

我只是在条目中放入1 2和3,然后在GUI中按下“计算”。

  

错误代码:   1   2   3   Tkinter回调中的异常   Traceback(最近一次调用最后一次):     文件“C:\ Users \ jimmy \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ tkinter__init __。py”,第1699行,调用       return self.func(* args)     在calculate_age中输入文件“C:\ Users \ jimmy \ Programming \ Apps_OOP \ calculator_app.py”,第35行       user = Person('User',datetime.date(int(year_entry.get())),(int(month_entry.get())),(int(day_entry.get())))   TypeError:未找到必需参数'month'(pos 2)

请帮忙!

2 个答案:

答案 0 :(得分:1)

错误出现在这段代码中:

datetime.date(int(year_entry.get()))

如果计算括号,您会看到正在关闭对datetime.date的调用。因此,错误表明您没有包含必需的参数。

这个bug很难看到,因为你试图在一行代码中做太多。您应该使用临时变量来存储条目小部件中的值,然后将变量用作datetime.date的参数

例如:

year = int(year_entry.get())
month = int(month_entry.get())
day = int(month_entry.get())
date = datetime.date(year, month, day)
user = Person('User', date)

这是更多的代码行,但更重要的是它更多的可读代码行。此外,您还可以更轻松地打印传递给函数的实际值。

答案 1 :(得分:0)

将第35行改为:

user = Person('User', datetime.date(int(year_entry.get()), int(month_entry.get()), int(day_entry.get())))