Как ссылаться на свойства объекта, если у меня есть имя объекта в виде строки - PullRequest
0 голосов
/ 29 мая 2020

Я использую Python (последний с PyQt5). На моем экране 30 меток, и их имена от label_01 до label_30. Я хочу изменить текст нескольких ярлыков на основе некоторого logi c.

Ярлыки, которые я хочу изменить, хранятся в списке строк (названия ярлыков). Например, предположим, что мой logi c выбрал эти ярлыки: label_13, label_16, label_28 ​​

Вопрос Поскольку список ярлыков динамический c, как я могу изменить ярлыки в l oop, что на основе списка?

Я могу сделать это: self.label_1.setText ('Команда отправлена ​​...') Но как передать имя метки в качестве параметра вместо «label_1»

Спасибо, Эяль

1 Ответ

0 голосов
/ 29 мая 2020

Попробуйте setattr, который получает 3 параметра: объект, атрибут которого должен быть установлен (может быть self, если используется внутри определения класса), имя атрибута в виде строки и новое значение.

Попробуйте:

# let `labels_to_change` be your dynamic list of labels you want to change and set them to be equal to new_value
labels_to_change = ['label_1','label_3']
new_value = "new_value"

for label in labels_to_change:
    setattr(getattr(self, label), "text", new_value)    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...