python 为什么我无法获取条目的数据并在句子中使用它?

vngu2lb8  于 2023-01-12  发布在  Python
关注(0)|答案(1)|浏览(108)

我完成了大部分工作,但是当我输入要计算的变量时,它不起作用。函数部分和下面的部分有问题。有人能帮帮我吗?谢谢

from tkinter import * 

win = Tk()
win.title("Age Generator")
win.geometry("600x300")
win.resizable(FALSE,FALSE)

etiket = Label(text="Welcome to the age generator.\nThis app, calculates your age with the year that you will choose",font="Cambria 12",fg="gray",anchor=CENTER)
etiket.place(relx=0.1,rely=0.1)

yaz = Label(text="Enter your age:",font="Cambria 10",bg="lightgray")
yaz.place(relx=0.2,rely=0.3)

age = Entry()
age.place(relx=0.4,rely=0.3)

yaz2 = Label(text="Ener the year:",font="Cambria 10",bg="lightgray")
yaz2.place(relx=0.2,rely=0.4)

year = Entry()
year.place(relx=0.4,rely=0.4)

def get_data():
    cf1 = etiket.config(text= age.get(), font= ('Helvetica 13'))
    cf2 = Label.config(text= year.get(), font= ('Helvetica 13'))
    # label= Label(text="", font=('Helvetica 13'))
    # label.pack()
    result = Label(text=f"{year} yılında {cf2 - (2023-cf1)} yaşında olacaksınız!",font="Cambria Bold 10",bg="darkgray",fg="black",anchor=CENTER)
    result.pack(side=BOTTOM)

button = Button(text="Calculate My Age",command=get_data,width=15,height=2)
button.place(relx=0.3,rely=0.5)

mainloop()

我试着做一个应用程序,告诉你你的年龄与你选择的年份。例如,假设我20岁,我问我在3786年是什么年龄。机器回答我写的代码。
但是,我总是得到TypeError。

laik7k3q

laik7k3q1#

问题是cf1是调用config的结果,而不是整数,cf2也是如此,因此,f"{year} yılında {cf2 - (2023-cf1)无法工作,因为您试图对Label s而不是数字进行数学运算。
您可以通过将每个值的get设置与cf1cf2config组合分开来解决此问题

def get_data():
    age_value = age.get()
    year_value = year.get()

    cf1 = etiket.config(text=age_value, font=('Helvetica 13'))
    cf2 = Label(text=year_value, font=('Helvetica 13'))
    cf2.pack(side=BOTTOM)

    result = Label(
        text=f"{year_value} yılında {int(year_value) - (2023 - int(age_value))} yaşında olacaksınız!",
        font="Cambria Bold 10",
        bg="darkgray",
        fg="black", anchor=CENTER
    )
    result.pack(side=BOTTOM)

相关问题