You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:32:15