#header-mark#
ChatMessage 聊天消息组件
用于显示聊天消息的组件,支持多种内容类型。该组件提供结构化的消息显示功能,包括:
- 显示用户头像(可以是文本、emoji或图片)
- 显示用户名
- 以自定义格式显示消息时间戳
- 支持消息反应并映射到图标
- 渲染各种内容类型,包括文本、图片、音频、视频等
底层实现为panel.chat.ChatMessage,参数基本一致,参考文档:https://panel.holoviz.org/reference/chat/ChatMessage.html
基本用法
基本的消息展示:
ChatMessage可以显示任何Panel可以显示的Python对象,例如Panel组件、数据框和图表:
可以指定自定义用户名和头像:
消息更新
组件的值、用户名和头像都可以动态更新:
将输出流式传输到ChatMessage最简单、最好的方式是通过异步生成器。
样式
如果您想要一个仅显示 value 的普通界面,请将 show_user 、 show_copy_icon 、 show_avatar 和 show_timestamp 设置为 False ,并为 reaction_icons 提供一个空的 dict 。
可以设置常用的样式和布局参数,如 sizing_mode 、 height 、 width 、 max_height 、 max_width 和 styles 。
代码高亮
支持代码块的语法高亮(需要安装 pygments):
API
核心属性
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| object | 消息内容(支持字符串/面板/控件/布局等) | object | None |
| renderers | 内容渲染器(可调用对象列表,首个成功执行的将被使用) | List[Callable ] | None |
| user | 发送者用户名 | str | "" |
| avatar | 用户头像(支持文字/emoji/图片等,未设置时使用用户名首字母) | str|BinaryIO | None |
| default_avatars | 用户名到默认头像的映射字典(键值不区分大小写和特殊字符) | Dict[str, str|BinaryIO ] | {} |
| edited | 消息编辑触发事件 | bool | False |
| footer_objects | 消息底部显示的组件列表 | List | [] |
| header_objects | 消息头部显示的组件列表 | List | [] |
| avatar_lookup | 头像查找函数(设置后将忽略default_avatars) | Callable | None |
| reactions | 消息关联的反应列表 | List | [] |
| reaction_icons | 反应图标映射(未设置时默认{"favorite": "heart"}) | dict | |
| timestamp | 消息时间戳(默认使用实例化时间) | datetime | 当前时间 |
| timestamp_format | 时间戳显示格式 | str | - |
| timestamp_tz | 时区设置(仅timestamp未设置时生效) | str | 系统默认时区 |
显示属性
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| show_avatar | 是否显示用户头像 | bool | True |
| show_user | 是否显示用户名 | bool | True |
| show_timestamp | 是否显示时间戳 | bool | True |
| show_reaction_icons | 是否显示反应图标 | bool | True |
| show_copy_icon | 是否显示复制图标 | bool | False |
| show_edit_icon | 是否显示编辑图标 | bool | False |
| show_activity_dot | 是否显示活动状态指示点 | bool | False |
| name | 消息组件标题 | str | "" |
Events
| 事件名 | 说明 | 类型 |
|---|---|---|
| change | 值改变时触发 | Callable |
Slots
| 插槽名 | 说明 |
|---|---|
| default | 消息内容 |
| header | 消息头部内容 |
| footer | 消息底部内容 |
方法
| 方法名 | 说明 | 参数 |
|---|---|---|
| serialize | 将消息序列化为字符串 | - |
Controls
src/examples/panel_vuepy/chat/ChatMessage