将背景颜色更改为在 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')
我正在使用 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')