使用Flet库创建类时出现'_build_add_commands'错误,如何显示Hello文本?
解决Flet中"object has no attribute '_build_add_commands'"错误
报错原因很直接:你定义的Try是普通Python类,并非Flet控件的子类,而page.add()只接受Flet的Control(或其子类,比如Text、Container)对象。普通类没有Flet控件必备的_build_add_commands方法,因此触发错误。
下面是两种可行的修复方式:
方式一:继承Flet的UserControl(推荐自定义组件的写法)
Flet提供UserControl基类用于创建自定义组件,继承后需实现build()方法返回要渲染的控件,同时必须调用父类的初始化方法:
import flet from flet import * class Try(UserControl): def __init__(self, page:Page): super().__init__() # 必须调用父类初始化 self.page = page self.text = Text("Hello") def build(self): # 返回要显示的控件 return self.text def main(page:flet.Page): page.add(Try(page)) flet.app(target=main)
方式二:直接传入Flet控件实例(简化写法)
如果不需要自定义类的复杂逻辑,直接在main中添加Text控件即可:
import flet from flet import * def main(page:flet.Page): page.add(Text("Hello")) flet.app(target=main)
若要保留自定义类的结构,也可以添加方法返回控件实例:
import flet from flet import * class Try(): def __init__(self, page:Page): self.page = page self.text = Text("Hello") def get_control(self): return self.text def main(page:flet.Page): try_obj = Try(page) page.add(try_obj.get_control()) flet.app(target=main)
内容的提问来源于stack exchange,提问作者Azka El
相关产品推荐
相关产品推荐

