如何在GUIZero中动态引用30个PushButton控件修改背景色?
你遇到的错误核心原因是:拼接出来的btn是字符串类型,而非PushButton控件的实例对象,字符串自然没有bg属性。下面是两种可行的解决方案:
方案1:创建按钮时存入列表(推荐)
这是最规范、易维护的做法,在初始化按钮时就把它们统一存到列表里,后续直接遍历列表操作即可:
from guizero import App, PushButton app = App() # 初始化列表存储所有按钮 buttons = [] for idx in range(30): # 创建按钮并添加到列表 button = PushButton(app, text=f"按钮 {idx}") buttons.append(button) def Clearapp(): # 遍历列表修改每个按钮的背景色 for btn in buttons: btn.bg = "light grey" # 添加触发清理操作的按钮 PushButton(app, text="重置背景", command=Clearapp) app.display()
方案2:通过全局变量字典获取已创建的按钮
如果已经提前创建了button_0到button_29这些全局变量,可以通过globals()字典根据名称获取控件实例:
def Clearapp(): for x in range(30): # 从全局变量中获取对应名称的按钮实例 btn = globals()[f"button_{x}"] btn.bg = "light grey"
注意:这种方法依赖变量名称的严格匹配,代码可读性和维护性不如方案1,仅适合已存在大量命名控件的场景。
内容的提问来源于stack exchange,提问作者Chris Wren
相关产品推荐
相关产品推荐

