streamlit部分api函数相关介绍


一个能够搭建简单前端交互界面的python库。
该代码运行时需要在终端输入指令streamlit run your_st.py

相关api的介绍

首先,导入库

import streamlit as st
1、添加页面标题
st.title("hello world")

注意,每个页面只能有一个title,若是有多句st.title(),以最后一个为最终结果。
st.title()的示例图

2、文本输入框
#此处用户的输入会被user_input变量存储,均为str类型
user_input = st.text_input("user_input:") 

在这里插入图片描述

3、滑动条
#此处展示该函数承接了4个参数
#”description“:是对这个滑动条的介绍描述
# 1 表示最小值为1;20 表示最大值为20; 5 表示滑动条初始值为5
#此处user_input 为int类型
user_input = st.slider("description",1,20,5)

在这里插入图片描述

4、选择项
#[1,2,3,4]为你的选项设置
#例如选择语言['en','cn']
#此处user_input类型为你的选择项的类型
user_input = st.selectbox("description",[1,2,3,4])

在这里插入图片描述

5、按钮
#disabled = True表明该按钮无法按下,使用,默认为false
#按下 则clc = 1; 否则 clc = 0;
clc = st.button(label = "description", disabled = False)

在这里插入图片描述

6、上传文本
#type表示能够接收的文件类型
#key相当于整个文件接收框元件的“身份证”,不同的file_uploader()有不同的key
#accept_multiple_files bool参数,表明是否接收多个文件。
#其中uploaded_files是一个含file_uploader对象的列表
uploaded_files = st.file_uploader(
        "选择一个或多个文件",
        type=["csv", "txt", "xlsx", "json", "jpg", "jpeg", "png", "gif"],  
        key="file_uploader_1",
        accept_multiple_files=True
    )

在这里插入图片描述

控制位置参数api

利用sidebar将会使得文本上传框置于页面左侧

# 在侧边栏放置文件上传组件,允许上传多个文件
    uploaded_files = st.sidebar.file_uploader(
        "选择一个或多个文件",
        type=["csv", "txt", "xlsx", "json", "jpg", "jpeg", "png", "gif"],  # 新增图片文件类型
        key="file_uploader_1",
        accept_multiple_files=True
    )

在这里插入图片描述

7、上传文件的展示与收缩框
  1. 其中text/csv是MIME类型表示法
  2. with st.expander(f"查看文件内容 - {uploaded_file.name}"):这是收缩框语句
import pandas as pd

uploaded_files = st.file_uploader(
        "选择一个或多个文件",
        type=["csv", "txt", "xlsx", "json", "jpg", "jpeg", "png", "gif"],  
        key="file_uploader_1",
        accept_multiple_files=True
    )
    
 # 主内容区域
st.write("文件上传:")
if uploaded_files is not None:
     for uploaded_file in uploaded_files:  
         # 处理文件
         if uploaded_file.type == "text/csv":
             df = pd.read_csv(uploaded_file)
             with st.expander(f"查看数据预览 - {uploaded_file.name}"):
                 st.dataframe(df)
         elif uploaded_file.type == "text/plain":
             content = uploaded_file.read().decode("utf-8")
             with st.expander(f"查看文件内容 - {uploaded_file.name}"):
                 st.text_area(f"文件内容 - {uploaded_file.name}", content, height=300)
         elif uploaded_file.type == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":
             df = pd.read_excel(uploaded_file)
             with st.expander(f"查看数据预览 - {uploaded_file.name}"):
                 st.dataframe(df)
         elif uploaded_file.type == "application/json":
             data = pd.read_json(uploaded_file)
             with st.expander(f"查看数据预览 - {uploaded_file.name}"):
                 st.dataframe(data)
         elif uploaded_file.type in ["image/jpeg", "image/png", "image/gif"]:
             # 显示图片
             image = Image.open(uploaded_file)
             with st.expander(f"查看图片 - {uploaded_file.name}"):
                 st.image(image, caption=uploaded_file.name, use_column_width=True)

在这里插入图片描述
在这里插入图片描述

8、分页展示tab
import streamlit as st

# 设置标题
st.title("选项卡示例")

# 创建选项卡
tabs = st.tabs(["首页", "使用方法", "模板预览"])

# 选项卡1的内容
with tabs[0]:
    st.header("首页")
    st.write("在这里可以放置任何内容,比如文本、图表或输入框。")
    user_input_1 = st.text_input("输入一些文本:")
    st.button("提交选项卡1")

# 选项卡2的内容
with tabs[1]:
    st.header("这是选项卡2")
    st.write("在这个选项卡中,您可以展示其他信息。")
    user_input_2 = st.slider("选择一个值:", 0, 100)
    st.button("提交选项卡2")

# 选项卡3的内容
with tabs[2]:
    st.header("这是选项卡3")
    st.write("在这里也可以放置更多内容。")
    st.image("https://via.placeholder.com/300", caption="示例图片")
    st.button("提交选项卡3")

在这里插入图片描述

9、对话框
  • 这个没有明确的api接口实现,目前已经实现的一种方法就是使用st.session_state存储
import streamlit as st
import time  # 模拟处理时间

# 模拟获取GPT响应的函数
def get_gpt_response(user_input):
    time.sleep(1)  # 模拟处理延迟
    return f"这是您询问的问题的回答:{user_input}"

st.title("对话框示例")

# 初始化会话状态
if 'dialogue' not in st.session_state:
    st.session_state.dialogue = []

# 用户输入框
user_input = st.text_input("请输入您的需求:")

#虽然没有while循环,但是能够一直输入,是因为这个是事件驱动


if st.button("提交"):
    if user_input:
        with st.spinner("正在生成回答..."):
            response = get_gpt_response(user_input)

        # 将用户输入和模型回答添加到对话历史
        st.session_state.dialogue.append({"user": user_input, "gpt": response})


# 显示对话历史,只显示最新的 10 条
if st.session_state.dialogue:
    for entry in st.session_state.dialogue[-10:]:  # 仅显示最后 10 条对话
        st.write(f"**用户**: {entry['user']}")
        st.write(f"**GPT**: {entry['gpt']}")

在这里插入图片描述
注意:这里用户在输入行输入且点提交后,输入框的内容并没有自动清除,目前还没实现该功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值