Создаю калькулятор квадратных уравнений на питоне. Импортировал библиотеку Tkinter. При нажатии кнопки Enter выдает ошибку AttributeError: 'NoneType' object has no attribute 'get' Ошибка вылазит в функции get
import tkinter as tk
import math as math
win = tk.Tk() # создание окна
win.title("SQRT Equation")
win.geometry("400x250+700+200")
win.resizable(False, False)
win.config(bg="#212121") # Цвет фона
photo = tk.PhotoImage(file='title.png')
win.iconphoto(False, photo)
win1 = tk.Frame() #рабочая область
win1.grid()
def solver(a_value, b_value, c_value):
d = (b * b) - (4 * a * c)
if d >= 0:
x1 = (-b + (d ** (1/2))) / (2 * a)
x2 = (-b - (d ** (1/2))) / (2 * a)
text = "D = %s \n x1 = %s \n x2 = %s \n" %(d, x1, x2)
else:
text: "Уравнение не имеет корней"
return text
def inserter(value):
output.delete("0.0", "end") #вывод результата (value)
output.insert("0.0", value)
def get():
try:
a_value = float(a.get()) #Тут ошибка
b_value = float(b.get()) #Тут ошибка
c_value = float(c.get()) #Тут ошибка
inserter(solver(a_value, b_value, c_value))
except ValueError:
inserter("Проверьте правильность написания значений")
title1 = tk.Label(win, text="Калькулятор квадратных уравнений",
bg="#212121",
fg="white",
font=("Arial", 14))
title1.grid(row=0, column=0, columnspan=6, stick=("ew"))
title2 = tk.Label(win, text=" Формула полного квадратного уравнения:\n ax^2+bx+c=0",
bg="#212121",
fg="white",
font=("Arial", 14)).grid(row=1, column=0, columnspan=6, stick=("ew"))
a = tk.Entry(win,
bg="gray",
fg="white",
font=("Arial", 14),
width=4).grid(row=2, column=0, stick=("we"))
sqrtx = tk.Label(win, text="x^2 +",
bg="#212121",
fg="white",
font=("Arial", 14),
width=3).grid(row=2, column=1, stick=("ew"))
b = tk.Entry(win,
bg="gray",
fg="white",
font=("Arial", 14),
width=4).grid(row=2, column=2, stick=("we"))
x = tk.Label(win, text="x +",
bg="#212121",
fg="white",
font=("Arial", 14),
width=3).grid(row=2, column=3, stick=("ew"))
c = tk.Entry(win,
bg="gray",
fg="white",
font=("Arial", 14),
width=4).grid(row=2, column=4, stick=("we"))
enter = tk.Button(win, text="Enter",
bg="gray",
fg="white",
font=("Arial", 14),
command=get).grid(row=3, column=2)
output = tk.Text(win, bg="#212121",
fg="white",
font=("Arial", 14),
width=30,
height=3).grid(row=5, column=0, columnspan=6)
win.mainloop()
При этом в интернете есть похожий код, но там все работает
def handler():
""" Get the content of entries and passes result to the output area """
try:
# make sure that we entered correct values
a_val = float(a.get())
b_val = float(b.get())
c_val = float(c.get())
inserter(solver(a_val, b_val, c_val))
except ValueError:
inserter("Make sure you entered 3 numbers")