想在终端里做带界面交互的工具——进度条、表格、表单、仪表盘——传统做法要么用 curses 手写(难且丑),要么只能退回到纯文本。Textual 的切入点:用 Python 写逻辑、用类似 CSS 的语法写样式,把 Web 开发的心智直接搬进终端,做出好看又能交互的 TUI 应用。
项目基本信息
| 信息项 | 详情 |
|---|---|
| 项目名称 | textual |
| GitHub地址 | https://github.com/Textualize/textual |
| 项目描述 | 用 Python 和 CSS 语法构建精美终端 UI 应用的框架 |
| 作者 | Textualize |
| 开源协议 | MIT License |
| 开源状态 | 公开 |
| Languages | — |
| 支持平台 | Windows / macOS / Linux |
| 最后更新 | 2026-10-09 |
一、项目介绍
Textualize/textual 是一个用 Python 构建终端 UI(TUI)的框架,MIT 协议。它让你用 Python 定义组件与事件,用类似 CSS 的样式表控制布局与外观,支持响应式布局、动画、异步与鼠标交互。Textual 还提供 Textual Web 能力,可把同一套 TUI 跑在浏览器里。它适合做终端仪表盘、日志查看器、交互式 CLI 工具等。
二、核心优势
- Web 式开发:组件 + CSS 样式,前端心智直接复用。
- 精美交互:支持布局、动画、鼠标与键盘事件。
- 异步友好:基于 asyncio,UI 不阻塞。
- 可上浏览器:Textual Web 把 TUI 跑在网页里。
- 跨平台:终端应用,Windows / macOS / Linux 一致。
三、适用场景
- 终端仪表盘、实时监控与日志查看器。
- 交互式 CLI 工具(表单、选择器、表格)。
- 教学演示 TUI 编程。
- 不想开浏览器、又要好看界面的场景。
四、安装教程
用 pip 安装:
pip install textual常见报错:Windows 终端需支持 VT 转义(现代 Windows Terminal 默认可);虚拟环境可避免依赖冲突。
五、使用示例
一个最简计数器应用:
from textual.app import App, ComposeResult
from textual.widgets import Button, Label
class CounterApp(App):
def compose(self) -> ComposeResult:
yield Label("0")
yield Button("+1")
def on_button_pressed(self, event: Button.Pressed) -> None:
self.query_one(Label).update(
str(int(self.query_one(Label).renderable) + 1)
)
CounterApp().run()真实效果:运行后终端里出现一个标签与按钮,点击按钮数字 +1——用纯 Python + 事件就把交互界面做出来了,外观还能用 CSS 调整。
六、常见问题
Q:和 curses 比?
A:Textual 的组件/CSS/事件模型更接近现代前端,开发体验远好于裸 curses。
Q:能在浏览器跑吗?
A:可以,Textual Web 把同一套应用搬到网页。
Q:影响性能吗?
A:基于异步,UI 操作不阻塞;复杂界面仍需合理组织组件。
七、总结
Textual 把 Web 的组件与 CSS 心智带进终端,让 Python 开发者轻松做出好看又能交互的 TUI 应用。对要在命令行里提供图形化体验的团队,它是当下最现代的 Python TUI 框架;MIT 协议,还能上浏览器。
评论 0
还没有评论,来说两句吧。