使用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)