Python3:如何在for循环中传递迭代器构造的变量名

Python3: How to pass variable names constructed by iterator in a for loop

使用 guizero 在 Python3 中放置 GUI 按钮。

我有多个按钮,名称为: 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" 变量转换成我可以传递给函数的东西。但该死的,如果我能弄清楚它是什么....

你能迭代按钮列表吗?喜欢:

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

此外,为了简洁和更动态的代码,您可以将按钮存储在列表中,因此迭代变为:

for button in sound_buttons:
    change_color(button)