Das Argument TypeError: int () muss eine Zeichenfolge, ein byteähnliches Objekt oder eine Zahl sein, nicht der Fehler 'NoneType'


Darsh Patel

Ich bin neu bei Tkinter und es heißt, dass ich in einen String konvertieren soll, aber meine Eingabe ist eine Ganzzahl. Wenn ich sie ausführe, wird folgende Fehlermeldung angezeigt:

Das Argument TypeError: int () muss eine Zeichenfolge, ein byteähnliches Objekt oder eine Zahl sein, nicht '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()

Ich möchte die Zahlen verwenden, die mir der Benutzer gibt, und sie in die Gleichung einfügen, die ich im Programm "a = p * (1-0.15) ** n" verwendet habe.

Almiki

Ihre Rückrufe haben keine return-Anweisungen, daher werden sie tatsächlich zurückgegeben None. Also in diesen Zeilen:

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

mund abeide werden zugewiesen None, also rufen Sie an int(None). Sie wollen wahrscheinlich etwas tun wie:

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

und

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

Verwandte Artikel