@itlol

Как исправить ошибку 'NoneType' object has no attribute 'get'?

При запуске кода и нажатии в окне "Вычислить" выдает ошибку - line 30, in calculate
a = self.a.get()
AttributeError: 'NoneType' object has no attribute 'get'
Можете пожалуйста объяснить в чем проблема?
Заранее спасибо.
from tkinter import*
from math import sqrt

class App(Frame):

    def __init__(self, master):
        super(App, self).__init__(master)
        self.grid()
        self.create_widgets()
    
    def create_widgets(self):
        Label(self,text = 'Коэффициент a').grid(row = 0, column = 0)
        self.a = Entry(self).grid(row = 0, column = 1, sticky = W)
        Label(self,text = 'Коэффициент b').grid(row = 1, column = 0)
        self.b = Entry(self).grid(row = 1, column = 1, sticky = W)
        Label(self,text = 'Коэффициент c').grid(row = 2, column = 0)
        self.c = Entry(self).grid(row = 2, column = 1, sticky = W)
        Button(self, text = "Вычислить", command = self.calculate).grid(row = 3, column = 0)
        Button(self, text = 'Выйти', command = self.quit).grid(row = 4, column = 0)
        self.results = Text(self, width = 40, height = 5, wrap = WORD)
        self.results.grid(row = 5, column = 0, columnspan = 2)
    
    def calculate(self):
        a = self.a.get()
        b = self.b.get()
        c = self.c.get()
        D = b**2 - 4*a*c
        if D < 0:
            message = 'Нет решений'
        elif D > 0:
            x1 = (-b-sqrt(D))/(2*a)
            x2 = (-b+sqrt(D))/(2*a)
            message = 'x1 = ' + str(x1) + '\n'
            message += 'x2 = ' + str(x2)
        elif D == 0:
            x = (-b)/(2*a)
            message = 'x = '+ str(x)
        self.results.delete(0,0, END)
        self.results.insert(0,0, message)


root = Tk()
root.title('Квадратные уравнения')
root.geometry('350x250')
app = App(root)
root.mainloop()
  • Вопрос задан
  • 7004 просмотра
Решения вопроса 1
@assembled
Перепишите все объявления виджетов в таком виде:
self.a = Entry(self)
self.a.grid(row = 0, column = 1, sticky = W)

Метод grid не возвращает значений.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@itlol Автор вопроса
Спасибо)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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