Как строку превратить в имя кнопки

for i in range(10):
    for i1 in range(10):
        if a.battleMap[i][i1]=="[O]":
            #Вот здесь вся проблема, мне нужно чтобы программа понимала, что  
            # ("pushButton"+str(i)+str(i1)) не просто текст, а имя кнопки 
            self.("pushButton"+str(i)+str(i1)).setText("aaa")

Ответы (2 шт):

Автор решения: Xander

Если я правильно понял, чего вы хотите, то как-то вот так должно работать:

button_name = "pushButton" + str(i) + str(i1)
button = getattr(self, button_name)
button.setText("aaa")

Функция getattr позволяет обратится к аттрибуту объекта по его имени.

Подробнее можно прочитать, например, здесь: https://docs-python.ru/tutorial/vstroennye-funktsii-interpretatora-python/funktsija-getattr/

→ Ссылка
Автор решения: S. Nick

Вы можете использовать setattr() / getattr() для динамического создания переменных, используя строку, как показано ниже:

import sys
from PyQt5.Qt import *

class Example(QWidget):
    def __init__(self):
        super().__init__()
        
        lay = QGridLayout(self)

        for r in range(10):
            for c in range(10):
                pushButton = QPushButton(f'pushButton_{r}-{c}')
                pushButton.clicked.connect(lambda ch, r=r, c=c: self.create_txt(r, c))
                lay.addWidget(pushButton, r, c)

                # Атрибут класса создается с помощью setattr()                          # !!!
                setattr(self, f"pushButton_{r}-{c}", pushButton)                        # !!! setattr
        
    def create_txt(self, r, c):
        # использование с помощью getattr() так:                                        # !!!
        obj = getattr(self, f"pushButton_{r}-{c}")                                      # !!! getattr
        #print(f'obj = {obj} --> {obj.text()}')  
        if obj.text() == "Hello World":
            obj.setText(f"pushButton_{r}-{c}") 
        else:
            obj.setText("Hello World")    


if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = Example()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка