Python3: как передать имена переменных, созданные итератором, в цикл for - PullRequest
0 голосов
/ 14 февраля 2019

Использование guizero для размещения кнопок для графического интерфейса в Python3.

У меня есть несколько кнопок с именем: sound_button_01 sound_button_02 sound_button_03 и т. Д.

Они определены стандартным способом и работают безпроблемы.

Я хочу перебрать эти кнопки с помощью цикла for и изменить цвет фона (например, sound_button_01.bg = "red") каждого из них.

Это работает, когда я вызываюмоя функция изменения цвета с полным именем переменной:

def change_color(button_name)
    button_name.bg = "red"
    return

[main code]

change_color(sound_button_01)

Это работает безупречно.Но когда я пытаюсь выполнить итерацию с переменной i:

[same def as above]

[main program starts]
for i in range (1,3):
    target_button = ("sound_button_0") + str (i)
    change_color(target_button)
[for loop ends]

, я получаю сообщение об ошибке "AttributeError: у объекта 'str' нет атрибута 'bg'.

Так что, вероятно, есть некоторыеочень простой способ конвертировать строковую переменную "target_button" во что-то, что я могу передать функции. Но черт возьми, если я смогу выяснить, что это такое ....

1 Ответ

0 голосов
/ 14 февраля 2019

Можете ли вы повторить список кнопок?Например:

for button in [sound_button_01, sound_button_02, sound_button_03]:
    change_color(button)

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

for button in sound_buttons:
    change_color(button)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...