#2832·taipy

[重 聊天组件改进

作者: arcanaxion创建于 2026年3月18日更新于 2026年7月6日
标签📈 ImprovementGUI: Front-End

说明

这个问题是一个可以对聊天部分进行改进的集合.

在下面的应用程序中,聊天部分最初在按钮下方有其输入框. 由于用户发送了更多消息,输入框向下扩展,页面被再向下滚动.

< details}}\ summary> main.py </ summary> (中文(简体) ).

语句

zz
导入时间

导入请求
将 taipy 导入为 tp
将 taipy.gui.builder 导入为 tgb
从泰平。 Gui 导入 Gui, 状态, 引用  long  callback, 导航, 通知

信件列表 = []
user list= ["人类","助理"]
发件人 id = user list[0]

为 聊天 活动=真
显示 聊天=真


繁忙 等 (秒: int) :
开始 时间=时间.时间()
在时间.time () - 开始 时间 < 秒:
通过


def 获得 assistant message(用户 message:str) - > 列表[str]:
url="https://baconipsum.com/api/" (中文(简体) ).
parms = {"类型":"吃吃填充","判决":3,"格式":"json"}
尝试 :
响应 = request.get(url,params=params) 请求:
响应。cause  for status ()
返回回复.json ()
例外作为e:
返回 [f] “ 错误取取熏肉 :{e} ”


def stream assistant message(用户 message: st) : (中文(简体) ).
累积( M) = ""
在 get assistant message(用户 message)中的句子:
用于句子中的单词。
累积( M)... "
忙碌等 (0. 2)
# 时间. sleep( 0.2)
打印( “ Yielding : ” ), 累积  message )
产量累积( M)


def 更新 message list(状态:状态,助手 message id:str,助手 message:str):
消息 list=状态. message list
在倒转( 范围( len( message  list) ) 中为 i) :
如果消息 list[i][]===========================================================================================================================================================================================================
信件列表[i][1]=助手 消息
换行
状态. message list = message list


def send chat message(状态, var name: str,有效载荷:dict):
状态.is chat 活性=虚假
尝试 :
( , ,消息,发件人 id)=有效载荷.get ("args", [])
助理  message id = str (len (state. message list) + 1) 帮助
消息 list = state.message list + [
[str (len (state. message list)), 消息,发件人 id],,
[协助 message id,", 状态.user list[1],
[ . ]
状态. message list = message list

用于流中的消息  助手  消息( 消息) :
更新  message list(状态,助手 message id,消息)
终于:
state.is chat active=为真


tgb.page () 作为root page :
tgb.toggle(主题=真理)
带有 tgb.part( class name="容器聊天- 页面显示") :
tgb.text ("# 和 ** Bacon Ipsum**, 模式="md") 对话
tgb.toggle ("{is show chat}",标签="显示聊天组件")
tgb.button ("通知", on action=lambda state:通知(状态"S","点击按钮")).
与 tgb.part (class name="chat-page", compare="{is show chat}") 相通 :
tgb.chat (中文(简体) ).
"{message list}},,",
用户="{user list}",
. . . . . . .