Streamlit中,Form组件是一种特殊的UI元素,允许用户输入数据而不立即触发应用的重新运行。

这对于创建需要用户输入多个参数后再进行处理的交互式表单非常有用。

1. 概要

Form组件的主要作用是在一个表单内集中处理多个用户输入,使得数据收集和验证更加高效和直观。

通过Form组件,开发者可以创建包含多个输入控件(如文本输入框、下拉选择框等)的表单,用户可以在表单内一次性填写所有必要的信息,然后提交。

这避免了传统表单提交时每次输入都会触发页面刷新的问题,从而提高了用户体验和应用的交互性。

根据Form组件的特点,在类似下面这些场景中,我们可以考虑使用Form

  1. 用户注册与登录:通过Form组件构建一个包含用户名、密码、邮箱等多个输入组件,以及一个提交按钮的页面,并在用户点击提交按钮后才开始进行验证和处理。
  2. 数据查询与筛选:通过Form组件可以包含多个选择框、输入框等组件,用于收集用户的查询或筛选条件。
  3. 参数配置与设置:在构建复杂的Web应用程序时,可能需要用户配置或设置一些参数,这些参数可能包括算法参数、界面样式等。通过Form组件,可以集中展示和配置这些参数。
  4. 多步骤表单处理:通过Form组件,开发者可以创建包含多个步骤的表单,并在用户完成每个步骤后收集相应的数据。
  5. 动态表单生成:在某些高级应用场景中,可能需要根据用户的选择或输入动态生成表单。例如,在构建在线问卷时,可能需要根据用户的选择展示不同的问题。

总之,StreamlitForm组件在很多应用场景中都发挥着重要作用,特别是在需要收集和处理多个用户输入的场景中表现尤为突出。

2. 主要参数

Form组件的参数很简单,主要用来简单的控制样式和提交的行为。

名称 类型 说明
key str 组件名称,具有唯一性
clear_on_submit bool 用户提交后,表单内的所有组件是否都重置为默认值
enter_to_submit bool 当用户在与表单内的组件交互时,按Enter键时是否提交表单
border bool 是否在窗体周围显示边框

Form组件本身并不直接接受各种组件来作为参数,但表单内部可以包含多种输入组件,如文本框(st.text_input)、选择框(st.selectbox)、滑块(st.slider)等。

此外,Form组件需要配合st.form_submit_button来创建一个提交按钮。

3. 使用示例

下面通过一些根据实际场景来简化的示例,演示Form组件的使用方式。

3.1. 数据预处理参数设置

在数据分析或机器学习项目中,数据预处理是一个关键步骤。

我们可以使用Form组件来让用户选择数据预处理的参数,如缺失值处理方法和特征缩放方法。

import streamlit as st
import pandas as pd
from sklearn.preprocessing import StandardScaler, MinMaxScaler # 加载示例数据集
data = pd.DataFrame(
{"feature1": [1, 2, None, 4, 5], "feature2": [10, 20, 30, None, 50]}
) # 定义表单提交后的回调函数
def preprocess_data(fill_method, scale_method):
if fill_method == "mean":
data.fillna(data.mean(), inplace=True)
elif fill_method == "median":
data.fillna(data.median(), inplace=True)
else:
data.dropna(inplace=True) if scale_method == "standard":
scaler = StandardScaler()
elif scale_method == "minmax":
scaler = MinMaxScaler()
else:
scaler = None if scaler:
data_scaled = pd.DataFrame(
scaler.fit_transform(data),
columns=data.columns,
)
st.write(data_scaled)
else:
st.write(data) # 创建表单
with st.form(key="preprocess_form"):
fill_method = st.selectbox(label="缺失值处理", options=["mean", "median", "drop"])
scale_method = st.selectbox(
label="特征缩放", options=["standard", "minmax", "none"]
)
submitted = st.form_submit_button(label="提交")
if submitted:
preprocess_data(fill_method, scale_method)

运行效果如下,【提交】按钮点击后才会刷新页面。

3.2. 机器学习模型超参数调优

在训练机器学习模型时,超参数的选择对模型性能有很大影响。

我们可以使用Form组件来让用户选择模型的超参数,并展示模型在验证集上的性能。

import streamlit as st
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score # 加载示例数据集
data = load_iris()
X, y = data.data, data.target
X_train, X_val, y_train, y_val = train_test_split(
X,
y,
test_size=0.2,
random_state=42,
) # 定义表单提交后的回调函数
def train_model(n_estimators, max_depth):
model = RandomForestClassifier(
n_estimators=n_estimators,
max_depth=max_depth,
random_state=42,
)
model.fit(X_train, y_train)
y_pred = model.predict(X_val)
accuracy = accuracy_score(y_val, y_pred)
st.write(f"准确率: {accuracy:.2f}") # 创建表单
with st.form(key="model_form"):
n_estimators = st.number_input(
label="Estimators 数量",
min_value=10,
max_value=200,
step=10,
value=100,
)
max_depth = st.number_input(
label="最大深度",
min_value=1,
max_value=20,
step=1,
value=10,
) submitted = st.form_submit_button(label="开始训练")
if submitted:
train_model(n_estimators, max_depth)

运行界面如下,点击【开始训练】按钮后显示训练后模型的准确率。

4. 总结

总的来说,StreamlitForm组件能够帮助我们简化表单的创建和数据收集的过程,使我们能够轻松构建具有复杂交互功能的数据应用。

『玩转Streamlit』--表单Form的更多相关文章

  1. 来玩Play框架04 表单

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 表单(form)是最常见的从客户往服务器传递数据的方式.Play框架提供了一些工具 ...

  2. HTML ------ 关于表单 Form

    Form(表单)主要用于采集和提交用户输入的信息,是页面与WEB服务器交互过程中 最重要的信息来源. 掌握表单(Form)有以下几个要点: 重要form属性 form常用控件 form提交方式 § 重 ...

  3. Bootstrap~表单Form

    回到目录 在进行自己的后台改版时,大体布局都使用了bootstrap,剩下的表单部分没理由不去使用它,对于表单的美化和布局,bootstrap做的也是很不错的,有大气的边框,多功能的按钮及宏观的表单布 ...

  4. 表单 - Form - EasyUI提供的表单异步提交

    方案一 被提交的表单 <form id="loginForm" method="post"> <table align="cente ...

  5. 跟服务器交互的Web表单(form)

    使用HTML来构建可以跟服务器交互的Web表单(form),通过给你的form元素添加一个action属性来达到此目的. action属性的值指定了表单提交到服务器的地址. 例如: <form ...

  6. 3、网页制作Dreamweaver(表单form)

    表单form (虚线不显示) 1.写法: <form id="form1" name="form1" method="post" ac ...

  7. DHTMLX 前端框架 建立你的一个应用程序 教程(九)--绑定表单Form到表格Grrid中

    绑定表单Form到表格Grrid中 现在我们需要选中一行表格数据的时候 数据能在表单中显示出来 我们可以使用DHTMLX 丰富的组件功能实现它. 绑定表单到表格 1.调用bind方法将表单绑定到网格, ...

  8. DHTMLX 前端框架 建立你的一个应用程序 教程(八)-- 添加表单Form

    添加表单Form 我们下一步是在页面中添加一个表单,表格中的选中字段将会显示在表单中.提供一个提交按钮 可以对显示的数据进行修改提交. 添加表单到布局单元格中 1.在右侧布局中使用attachForm ...

  9. 微信小程序基础之表单Form的使用

    表单Form的应用很广泛,我们可以利用form设计登录注册,也可以设计一种答题问卷的形式,今天主要讲一下form的使用 form表单,将组件内输入的"switch","i ...

  10. HTML(七)HTML 表单(form元素介绍,input元素的常用type类型,input元素的常用属性)

    前言 表单是网页与用户的交互工具,由一个<form>元素作为容器构成,封装其他任何数量的表单控件,还有其他任何<body>元素里可用的标签 表单能够包含<input> ...

随机推荐

  1. 合合信息扫描全能王亮相静安区3·15活动,AI扫描带来绿色消费新体验

    保护消费者的合法权益,是全社会的共同责任.为优化消费环境.促进品质消费高地建设,打造安全优质和谐的消费环境,上海静安区消保委于3月15日举办静安区2024年"3·15"国际消费者权 ...

  2. docker 安装启动jenkins 以及问题剖析

    docker 安装启动jenkins 以及问题剖析   首先,你环境必须要有docker,我这里是自己本地虚拟机Vmware,我的虚拟机时linux centos7的 .如果你不知怎么安装虚拟机和命令 ...

  3. 深入理解 Nuxt.js 中的 app:created 钩子

    title: 深入理解 Nuxt 中的 app created 钩子 date: 2024/9/26 updated: 2024/9/26 author: cmdragon excerpt: 摘要:本 ...

  4. 信创环境经典版SuperMap iManager监控外部SuperMap iServer资源失败,无法监控目标GIS服务器CPU与内存使用情况

    一.问题环境 操作系统:银河麒麟kylin V10 CPU:鲲鹏920 SuperMap iServer 10.2.0 SuperMap iManager 10.2.1 二.现象 部署完经典版Supe ...

  5. 为 KubeSphere 集群启用免费的泛域名 SSL 证书并实现证书自动更新和分发

    作者:scwang18,主要负责技术架构,在容器云方向颇有研究. 前言 KubeSphere 集群默认安装的证书是自签发证书,浏览器访问访问会发出安全提醒.本文记录了利用 let's encrytp ...

  6. 使用 Cursor 和 Devbox 快速开发基于 Rust 的 WASM 智能合约

    本教程以一个智能合约(使用 NEAR 的一个官方 Fungible Tokens 来实现)的例子来介绍一下 Devbox 的强大功能,轻松构建环境,轻松发布. NEAR 是一个去中心化的应用平台,使用 ...

  7. redis的主从复制master/slaver

    什么是Redis的复制 ​ 就是我们常说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主. 复制原理 Slave启动成 ...

  8. C221027B

    B 抽 \(n\) 次卡, 连续 \(i\) 次没有抽中时, 第 \(i+1\) 次抽中的概率是 \(p_i\), 规定\(p_k=1\), 求期望抽中次数. 标签:矩阵加速递推, 动态规划. 暴力: ...

  9. 重温c语言之,7天开整,就是随便的写写,第一天

    一:转义字符 \t是一个字符,在printf里面,只占一个位置: 其他什么的抽象字符,用一个'\'+抽象字符就可以出现: \ddd这个是8进制的,可以转成10进制的,之后参考ASCLL码表即可 二:枚 ...

  10. Linux日志轮替与总结

    目录 基本介绍 轮替文件的命名 配置文件 路径位置 参数说明 举例:把自己的日志加入日志轮替 说明 步骤 日志轮替机制原理[个人理解,仅供参考] 总结[关于日志需要掌握的点] 基本介绍 日志轮替就是把 ...