TypeError:int()参数必须是字符串、类似字节的对象或数字,而不是“NoneType”

2024-06-16 13:00:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚接触到Tkinter,它说要转换为字符串,但我的输入是一个整数,当我运行它时,它会给出以下错误:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

import tkinter as tk

window9 = tk.Tk()
msrp = tk.IntVar()
amgpage = tk.Label(window9, text="Mercedes Benz AMG Depreciation Calculator").pack(anchor='center')

amgpage = tk.Label(window9, text="What is the MSPR of the car?: ")
amgpage.pack()

msrp = tk.Entry(window9)
msrp.pack()

msrp.focus_set()

def callback():
    value=(msrp.get())

b = tk.Button(window9, text="Save your msrp value", command=callback,fg="red")
b.pack()
amgpage = tk.Label(window9, text="What is the age of the car?: ")
amgpage.pack()

old = tk.Entry(window9)
old.pack()
old.focus_set()
def callback2():
    age=(old.get())

b = tk.Button(window9, text="Save the age of the car", command=callback2,fg="blue")
b.pack()    
amgpage = tk.Label(window9, text="")
amgpage.pack(anchor='w')
def msrpv():
    m = callback()
    p = int(m)
    a = callback2()
    n = int(a)
    a=p*(1-0.15)**n
    amgpage=tk.Label(window9,text="$"+a)
    amgpage.pack()


amgmsrp = tk.Button(window9, text="Get the current value of the car.", command=msrpv,fg="green")
amgmsrp.pack()


window9.geometry("400x400")

window9.title("Mercedes Benz AMG Depreciation Calculator")

window9.mainloop()

我想用用户给我的数字,把它代入我在程序“a=p*(1-0.15)**n”中使用的等式。在


Tags: ofthetextvaluedefcallbackcarold
2条回答

回调没有return语句,因此它们实际上返回None。所以在这些方面:

m = callback()
p = int(m)
a = callback2()
n = int(a)

ma都被分配了None,所以您要调用int(None)。你可能是想做些类似的事情:

^{pr2}$

以及

def callback2():
    age=(old.get())
    return age

你根本不需要“回拨”。在

直接获取值

def msrpv():
    p = int(msrp.get()) 
    n = int(old.get())
    a=p*(1-0.15)**n
    amgpage=tk.Label(window9,text="$"+a)
    amgpage.pack()

请注意,value和{}只在本地限定了它们自己的函数的作用域,因此将它们放在按钮回调中没有任何作用

相关问题 更多 >