将背景颜色更改为在 for 循环中生成的按钮

Changing background color to buttons generated in a for loop

我正在使用 Tkinter 和按钮制作井字游戏 GUI。克服了一些问题,现在我想在单击其中一个按钮时更改背景颜色。到目前为止我所做的事情都是用 lambda 做的,但现在我似乎可以找到一种方法来使用 Tkinter 的 Button 函数的配置选项。我想在 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)

如果有人正在搜索相同的东西,问题是按钮可以配置,因为它们甚至没有保存在任何地方。我的解决方案是创建一个单独的函数来创建带有 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')