首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Streamlit中使用按钮回调函数填充文本区域

在Streamlit中使用按钮回调函数填充文本区域
EN

Stack Overflow用户
提问于 2022-09-30 00:51:38
回答 1查看 239关注 0票数 0

请参阅下面的图片:

我有以下用户流程/目标:

  • 选择一个使用“浏览文件”
  • 按下“提取”
  • 的文件这将触发'Fetch‘按钮
  • 的回调函数回调函数返回字符串输出

H 110将字符串输出写入文本框(替换“Select.”)H 211F 212

我有以下代码:

代码语言:javascript
复制
import streamlit as st
import os
import openai
from io import StringIO

from main import get_sql_response

@st.cache
def fetch_response(query_text):
    ## Get the API key  
    openai.api_key = os.getenv("OPENAI_API_KEY")
    ## Get the API response 
    response = get_sql_response(openai.api_key, query_text)
    print(response.choices[0]['text'])
    #st.caption(response.choices[0]['text'])
    st.text_area(label='The Query',key='qres', value=response.choices[0]['text'])
    return (response)

query_text = ""

st.markdown('## Sage Version  **V0.1**')

st.markdown("#### Query File ")

uploaded_file = st.file_uploader(" ", type='txt', accept_multiple_files=False, label_visibility="visible")

if uploaded_file is not None:
    # To read file as bytes:
    query_text = StringIO(uploaded_file.getvalue().decode("utf-8"))
    #st.write(query_text)

res = st.button("Fetch", on_click=fetch_response, args=(query_text))
qres = st.text_area(label='The Query',key='qres', placeholder="SELECT...")

我会将回调结果写入一个新的文本框:

我还得到了以下错误:

如何将回调函数结果写入同一个文本框?

EN

回答 1

Stack Overflow用户

发布于 2022-09-30 07:36:00

您有两个键值相同的st.text_area,这会导致错误。更改一个st.text_area的键值之一。每个键都必须唯一的

代码语言:javascript
复制
# make one of the key values here unique
st.text_area(label='The Query',key='qres', value=response.choices[0]['text'])
qres = st.text_area(label='The Query',key='qresvar', placeholder="SELECT...") 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73902944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档