使用日期时间检查 Tkinter 中的年龄

Check age in Tkinter using datetime

我是 python 的编程新手,我想创建一个简单的应用程序来根据用户输入计算您的年龄。我正在使用 'datetime' 模块,我在终端中找到了程序 运行 的示例,但我不知道使用 tkinter 将带有按钮的输入框拖到 link 。 This 是我正在使用的代码示例中的 link,我想在 tkinter 中重新创建它。

import tkinter as tk
from datetime import date

def CheckAge():
global result # to return calculation
result = str(entry.get())

today = date.today()
#Convert user input into a date
dob_data = result.split("/")
dobDay = int(dob_data[0])
dobMonth = int(dob_data[1])
dobYear = int(dob_data[2])
dob = date(dobYear,dobMonth,dobDay)

#Calculate number of days lived
numberOfDays = (today - dob).days 

#Convert this into whole years to display the age
age = numberOfDays // 365
label=tk.Label(root, "You are "+str(age) +" years old", command=CheckAge)
label.pack()
print("You are " + str(age) + " years old.")

result = 0
root = tk.Tk()

entry = tk.Entry(root)
entry.pack()

button = tk.Button(root, text="Calculate", command=CheckAge)
button.pack()

root.mainloop()

在执行此代码结束时,我收到此错误消息:

dobDay = int(dob_data[0])
ValueError: invalid literal for int() with base 10: ''

如前所述,我是初学者,我正在使用来自在线论坛的多个代码示例。

首先,标签没有命令。其次,您需要为标签添加属性“文本”。因此,这是您的代码的修改版本:

import tkinter as tk
from datetime import date

def CheckAge():
   global result # to return calculation
   result = str(entry.get())

   today = date.today()
   #Convert user input into a date
   dob_data = result.split("/")

   dobDay = int(dob_data[0])
   dobMonth = int(dob_data[1])
   dobYear = int(dob_data[2])
   dob = date(dobYear,dobMonth,dobDay)

   #Calculate number of days lived
   numberOfDays = (today - dob).days 

   #Convert this into whole years to display the age
   age = numberOfDays // 365

   label=tk.Label(root, text="You are "+str(age) +" years old")
   label.pack()
   print("You are " + str(age) + " years old.")

result = 0
root = tk.Tk()

entry = tk.Entry(root)
entry.pack()

button = tk.Button(root, text="Calculate", command=CheckAge)
button.pack()

root.mainloop()

通过这些小的修改,您应该能够得到您想要的结果。