Tkinter возвращает исключение AttributeError: 'NoneType' object has no attribute 'config'

Всем привет! Помогите разобраться почему возвращает исключение.

import tkinter as tk

FONT = ('Courier', 30)

root = tk.Tk()
root.title('Считалочка')
root.geometry('500x400+400+300')

number = tk.Label(root, text=int(0), font=FONT). grid(row=0, column=0)

btn_plus = tk.Button(root, text='+', font=FONT, width=10)
btn_plus.grid(row=1, column=0, columnspan=3, pady=20)

def click_plus():
    a = 0
    result = a + 1
    number.config(text=result)

btn_plus.config(command=click_plus)

root.mainloop()

Не могу понять почему он ругается на конфиг.


Ответы (1 шт):

Автор решения: MarianD

Ваша проблема заключается в том, что в команде

number = tk.Label(root, text=int(0), font=FONT). grid(row=0, column=0)

метод .grid() возвращает None, значит, в переменной number будет None, а не вами созданный объект типа Label.

Потому ваше number.config(text=result) является попыткой применить метод .config() на объект None, т.е. на объект типа NoneType, как сообщает ваша ошибка.

Разделите вашу команду на две:

number = tk.Label(root, text=int(0), font=FONT)
number.grid(row=0, column=0)

Между прочим, у вас логическая ошибка в функции click_plus() - в переменной result будет всегда 1, потому что в переменной a есть всегда нуль.

Исправите её так, что вместо

а = 0

присоедините переменной a текущее значение:

a = number['text']
→ Ссылка