@Max_Fast

Ошибка object has no attribute 'get' на Python. Как решить?

Создаю калькулятор квадратных уравнений на питоне. Импортировал библиотеку 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")
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы