用途
Textual 是一个终端用户界面(TUI)框架,用于在终端中构建交互式应用。当需要创建新的 Textual 应用、添加屏幕(Screen)与组件(Widget)、使用 TCSS 进行样式设计时,可使用本技能。
主要能力
- 采用受 Web 启发的架构:App → Screen → Widget。
- 支持组件生命周期管理:
__init__()→compose()→on_mount()→on_show()/on_hide()→on_unmount()。 - 响应式属性:使用
reactive与var,并支持watch_*与validate_*方法。 - 事件与消息机制:可自定义 Message、使用
post_message()、按on_<widget>_<message>命名处理函数,或用@on装饰器配合 CSS 选择器过滤。 - 数据流约定:属性向下(父级直接设置子组件属性),消息向上(子组件通过
post_message()向父级发送消息)。 - 屏幕管理:可定义 Screen 子类并通过
push_screen/pop_screen导航。 - 自定义组件:支持简单组件、复合组件与可聚焦组件。
- 布局模式:Horizontal、Vertical、Grid、VerticalScroll 等容器,Grid CSS、停靠(dock)等。
- 异步 Worker:使用
@work装饰器,支持exclusive=True(取消前一个任务)与thread=True(用于同步 API)。 - 测试支持:通过
app.run_test()与 Pilot 进行按键、点击、暂停等操作模拟。
使用方式
通过继承 App 类创建应用,定义 compose() 方法产出组件,并用 MyApp().run() 启动。样式可用 CSS_PATH 指定 TCSS 文件或 DEFAULT_CSS 内联。常用操作包括:查询组件(query_one、query)、CSS 类操作(add_class、toggle_class、set_class)、可见性(display)、挂载/移除(mount、remove)、定时器(set_interval、set_timer)以及退出(exit)。
适用场景
适合需要在终端内构建界面化工具的 Python 开发者,例如命令行交互应用、仪表盘、监控面板等。
限制
资料中未提供该技能的具体收费、价格、平台支持范围或效果保证等信息,暂未提供。更多组件目录、CSS 属性与完整示例可参阅官方文档:https://textual.textualize.io/