Изменение цвета фона для кнопок, сгенерированных в цикле for

Я делаю графический интерфейс крестиков-ноликов, используя Tkinter и кнопки. Покончил с некоторыми вещами, и теперь я хотел изменить цвет фона при нажатии одной из кнопок. То, что я делал до сих пор, я делал с лямбдой, но теперь я могу найти способ использовать параметр конфигурации функции Button из Tkinter. Я хотел добавить эту конфигурацию в функцию which_button, но ничего из того, что я мог найти, мне не помогло.

def __init__(self):
    super().__init__()
    self.button = {}
    self.turn = 'X'
    for i in range(3):
        for j in range(3):
            self.button[i, j] = Button(root, width=10, height=5, bg='#E0E0E0', fg='#6D6D6D', command=lambda i=i, j=j: self.which_button(i, j),).grid(row=i, column=j)

def which_button(self, i, j):
    label = Label(root, text=self.turn, fg='#E0E0E0', bg='#6D6D6D')
    label.grid(row=i, column=j)

Таких вопросов на сайте много. Вы проводили какие-либо исследования?

Bryan Oakley 22.03.2022 22:23

Настроить кнопки можно так: self.button[i, j].config(...) Но мне не понятно в чем именно у вас проблема.

Tom 22.03.2022 22:23

Я провел исследование, и ничего из того, что я нашел, не помогло, метод self.button[i, j].config(...) тоже не работает. Я хотел изменить цвет фона нажатой кнопки, используя ту же функцию, которая меняет метку на ней.

Clipz 22.03.2022 22:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если кто-то ищет то же самое проблема была в том, что кнопки можно было настроить, потому что они даже нигде не сохранялись. Мое решение состояло в том, чтобы создать отдельную функцию для создания кнопок с оператором return для первоначального сохранения кнопок, а затем с помощью кортежей вызывать эти кнопки для их настройки.

def __init__(self):
    super().__init__()
    self.button = {}
    self.turn = 'X'
    for i in range(3):
        for j in range(3):
            self.button[(i,j)]=self.create_button(i, j)

def create_button(self, x, y):
    self.button1 = Button(root, width=10, height=5, bg='#E0E0E0', fg='#6D6D6D', command=lambda i=x, j=y: self.pressed_button(i, j),)
    self.button1.grid(row=x, column=y)
    return self.button1

def pressed_button(self, i, j):
    label = Label(root, text=self.turn, fg='#E0E0E0', bg='#6D6D6D')
    label.grid(row=i, column=j)
    self.button[(i, j)].configure(bg='#6D6D6D')

Другие вопросы по теме