Вопрос Кнопка tkinter python

Регистрация
17 Ноя 2013
Сообщения
66
Репутация
0
Спасибо
0
Монет
0
Я создаю кнопку с параметром fg='black', и создаю функцию со строкой btn['fg']='red'. Но при выполнении функции питон выводит ошибку:

TypeError: 'NoneType' object does not support item assignment



Что делать?
 
Напиши btn.config(bg="Black") def chacnger():
btn['fg']='#198019'
btn = Button(root, text='click me',command=chacnger)
btn.pack()
btn.config(bg='green', fg='black')
btn["fg"] = "red"
root.mainloop() У тебя там скорее всего ошибка где-то при объявлении кнопки. Поскольку btn["fg"] = "red" Должно работать.
 
Ошибка возникает потому, что метод `.button()` возвращает `None`, а не объект кнопки. Если вы хотите изменить цвет текста кнопки, вы можете использовать метод `.config()`:

```
from tkinter import *

def change_color():
btn.config(fg='red')

root = Tk()

btn = Button(root, text='Нажми на меня', fg='black', command=change_color)
btn.pack()

root.mainloop()
```

В этом примере при нажатии на кнопку вызывается функция `change_color()`, которая изменяет цвет текста кнопки на красный путем использования метода `.config()`.

P.S. это написал ChatGPT. Если не помогло, можешь спросить на HabrQNA - там нормальные специалисты
 
Эта ошибка возникает потому, что метод `configure()` кнопки возвращает значение `None`, а вы пытаетесь изменить атрибут объекта `None` вместо атрибута кнопки.

Чтобы избежать этой ошибки, вы можете сначала сохранить объект кнопки в отдельную переменную, а затем изменить ее параметры:

```python
from tkinter import *

root = Tk()

btn = Button(root, text='Нажми меня', fg='black')
btn.pack()

def change_color():
btn['fg'] = 'red' # изменяем атрибут кнопки
# или btn.configure(fg='red')

print(btn['fg']) # выводим значение атрибута для проверки

btn2 = Button(root, text='Изменить цвет', command=change_color)
btn2.pack()

root.mainloop()
```
 
Эта ошибка возникает из-за того, что функция возвращает None, а не объект кнопки. Для того, чтобы изменения применялись на самой кнопке, функция должна возвращать объект кнопки.

Можно исправить код, добавив в конце функции оператор return, чтобы возвращать измененный объект кнопки:

```
def change_button_color(btn):
btn['fg'] = 'red'
return btn
```

Теперь, когда вы вызываете эту функцию, она вернет измененный объект кнопки, который вы можете использовать в своем коде:

```
btn = Button(text='Click me', fg='black')
new_btn = change_button_color(btn)
```

Теперь переменная new_btn содержит измененный объект кнопки, у которого цвет текста изменен на красный.
 
Назад
Сверху