如何从GridLayout的子按钮中获取信息?代码报错求助
问题解决方法
你的代码有两处问题导致了错误,修正如下:
问题1:添加的是Button类而非实例
add_widget(Button)里传的是Button类,不是具体的按钮对象,应该改成创建Button实例:Button()。
问题2:遍历子部件时误用了索引
for _ in self.layout.children循环中,_代表的是每个子部件(也就是Button实例),不是列表的索引。你用self.layout.children[_]相当于把Button实例当索引用,自然会触发类型错误。直接打印遍历到的变量即可。
修正后的完整代码
self.layout = GridLayout(cols=3) for _ in range(9): # 创建Button实例并添加到布局 self.layout.add_widget(Button()) # 直接遍历每个子部件并打印信息 for btn in self.layout.children: print(btn) # 如果需要获取按钮的具体属性,比如文本,可这样写: # print(f"按钮文本:{btn.text}")
如果需要给按钮设置自定义属性(比如文本),创建实例时可以直接指定:
self.layout.add_widget(Button(text=f"按钮{_+1}"))
内容的提问来源于stack exchange,提问作者Daniil
相关产品推荐
相关产品推荐

