2017-04-25 54 views
-1

我在我的tkinter程序中使用datetime時出現問題。 問題看起來是在這一行:在代碼中輸入錯誤,datetime.date,必需的參數'month'(pos 2)找不到

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中按下「計算」。

Error code: 1 2 3 Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\jimmy\AppData\Local\Programs\Python\Python36-32\lib\tkinter__init__.py", line 1699, in call return self.func(*args) File "C:\Users\jimmy\Programming\Apps_OOP\calculator_app.py", line 35, in calculate_age user = Person('User', datetime.date(int(year_entry.get())), (int(month_entry.get())), (int(day_entry.get()))) TypeError: Required argument 'month' (pos 2) not found

請幫忙!

+0

這是一個錯字:檢查你的括號。在您的代碼中,月份和日期值作爲參數傳遞給Person(),而不是傳入datetime.date()。 –

+0

再次檢查括號。你太過分了 –

+0

你們真棒!謝謝! – Stenmanj

回答

0

改線35到這樣的:

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

的錯誤是在這個跨度代碼:

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

如果算上括號,你會看到,你地關閉致電datetime.date。因此錯誤說你沒有包含必需的參數。

該錯誤很難看到,因爲您試圖在一行代碼中做太多。您應該使用臨時變量的值從入門部件存儲,然後使用變量作爲自變量,以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) 

這是多行代碼,但更重要的是它的多行可讀代碼。另外,您還可以更輕鬆地打印出傳遞給函數的實際值。

+0

偉大的建議,它更可讀!謝謝! – Stenmanj

相關問題