Используйте кортежи вместо вычисляемых строк
Я рекомендую использовать кортеж вместо строки в качестве индекса.Например:
...
d[(x,y)] = Checkers.create_button(...)
...
Позже, чтобы изменить что-то, вам просто нужно дать ему столбец и строку.Например, чтобы изменить кнопку на 4,6, просто:
d[(4,6)].configure(...)
Другая проблема
У вас также есть проблема, что create_button
не возвращает кнопку.Нужно вернуть кнопку, чтобы вы могли ее настроить.
def create_button(self, msg, setBg, x, y):
...
return self.bttn1
Лучшее решение
Еще лучше, если бы ваш класс Checkers
поддерживал список кнопок и имелэто обеспечивает метод для обновления кнопки.Тогда вашему приложению не нужно «знать», что класс шашек использует кнопку.
Например:
class Checkers():
def __init__(self, master):
self.buttons = {}
...
def create_button(self, msg, setBg, x, y):
button = Button(self, text=msg, width=12, height=5, bg=setBg)
button.grid(row=x, column=y)
self.buttons[(x,y)] = button
def update_button(self, x, y, text):
self.buttons[(x,y)].configure(text=text)
Затем в любом месте вашего кода, который требуется обновить для кнопки, вы вызываете метод update_button
в экземпляре Checkers
:
app = Checkers(root)
...
app.update_button(4,6, "hello, world")