На полпути через мою программу я хочу изменить диапазон команд экземпляра кнопки «при нажатии». Кнопки были созданы с использованием следующего класса:
class GameBoardButtons:
def __init__(self, name, buttonText, buttonRow, buttonColumn, buttonState, frame, colour):
self.name = name
self.button = Button(frame, text=buttonText, fg=colour,
height=2, width=5, state=buttonState,
command=lambda: shipListAppendFunc(self))
self.button.grid(row=buttonRow, column=buttonColumn)
def GridPosAttackable(self):
self.button.config(command=lambda: whenAttacked(self.name))
И функция, которую я вызываю для настройки кнопок, выглядит следующим образом:
def reconfigureButtons(grid):
children = grid.children
for c in children:
widget = children[c]
if isinstance(widget, (Button)):
widget.configure(command=lambda: whenAttacked(c.name))
Должен ли я вместо этого вызывать функцию внутри класса ("GridPosAttackable")? И если так, как бы я это сделал? Текущий способ, которым я имею это, все кнопки вызывают то же самое "self.name", не их уникальное имя.
Я хочу, чтобы при вызове «whenAttacked (что угодно)» поле / «любая» часть, которую он занимает, представляло собой уникальный идентификатор кнопки / метку «self».
Большое спасибо всем формам помощи!