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