if st.button("提交", key="predict") : with st.spinner("容我三思......🖥️"): st.session_state["state"] = predict(prompt_text, 4096, 1.0, 1.0, st.session_state["state"]) 调整为:按 Ctrl+Enter 即可发送
时间: 2023-07-21 09:04:11 浏览: 56
要实现按下 Ctrl+Enter 键即可发送,你可以使用 `st.text_area` 和 `st.form_submit_button` 结合起来实现。具体的代码修改如下:
```python
text_input = st.text_area("输入框", key="text_input", height=100)
if text_input and (text_input[-1] == "\n" or (st.button("提交", key="predict") and st.session_state["enter_pressed"])):
with st.spinner("容我三思......🖥️"):
st.session_state["state"] = predict(prompt_text, 4096, 1.0, 1.0, st.session_state["state"])
st.session_state["enter_pressed"] = False
else:
st.session_state["enter_pressed"] = False
```
在这个修改后的代码中,我们使用了一个新的 session state 变量 `enter_pressed` 来追踪 Enter 键是否被按下。当用户在文本输入框中按下 Enter 键时,`text_input` 的最后一个字符会变为 `\n`。当用户点击提交按钮时,我们同样检查 `enter_pressed` 变量,如果为 True,则触发提交操作。同时,在每次提交后,需要将 `enter_pressed` 设为 False,以确保下一次按下 Enter 键时能够正常触发提交。
请注意,这段代码的功能实现依赖于 Streamlit 的 session state 功能,需要确保你的 Streamlit 版本支持 session state。