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

问题描述 投票:0回答:1

使用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”转换为我可以传递给函数的东西。但是,如果我能弄清楚它是什么,我会胆怯....

python user-interface for-loop parameter-passing python-3.5
1个回答
0
投票

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

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

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

for button in sound_buttons:
    change_color(button)
© www.soinside.com 2019 - 2024. All rights reserved.