#header-mark#
Textual 终端UI组件
PnTextual
组件允许在 Panel 应用程序中渲染 Textual 应用程序。它通过补丁方式实现了一个自定义 Panel 驱动程序,并将应用程序渲染到 Terminal
组件中,完全支持鼠标和键盘事件。
底层实现为panel.pane.Textual
,参数基本一致,参考文档:https://panel.holoviz.org/reference/panes/Textual.html
基本用法
需要注意以下几点:
- 一旦
App
实例被绑定到PnTextual
组件,它就不能在另一个组件中重用,并且每个 App 实例只能绑定到单个会话。 - 应用程序必须在与它将运行的服务器相同的线程上实例化,例如,如果您使用
pn.serve(..., threaded=True)
提供应用程序,则必须在函数内部实例化App
。
PnTextual
组件可以直接接收 Textual App
,Panel 将处理其余部分,即启动应用程序、处理输入、重新渲染等。换句话说,应用程序将像在常规终端中运行一样工作。
让我们从一个非常简单的例子开始:
这对于简单的应用程序和更复杂的应用程序都适用。作为示例,这里我们嵌入了 Textual 文档中的计算器示例应用程序:
API
属性
属性名 | 说明 | 类型 | 默认值 |
---|---|---|---|
object | 要渲染的 Textual 应用程序 | textual.app.App | None |
sizing_mode | 尺寸调整模式 | str | 'fixed' |
width | 宽度 | int, str | None |
height | 高度 | int, str | None |
min_width | 最小宽度 | int | None |
min_height | 最小高度 | int | None |
max_width | 最大宽度 | int | None |
max_height | 最大高度 | int | None |
margin | 外边距 | int, tuple | 5 |
css_classes | CSS类名列表 | list | [] |
Slots
插槽名 | 说明 |
---|---|
default | 自定义默认内容 |
Controls
src/examples/panel_vuepy/panes/Textual