当前位置: 首页 > news >正文

python web框架streamlit


streamlit是什么?
是一个python web框架,例如django。但是和django相比各有侧重点。
streamlit和django哪个好?

要看业务场景,传统python web项目,用django,成熟稳定。
大模型、数据分析等用streamlit,简单快速,无需前端知识,学习成本低。

自定义插件

1、创建python文件custom_app.py

importstreamlitasstimporttime# 1. 初始化页面配置st.set_page_config(page_title="Streamlit 自定义插件演示",layout="centered")# 2. 初始化状态 (Session State)# 如果 'is_big' 不在状态里,就默认为 False (小按钮)if'is_big'notinst.session_state:st.session_state.is_big=False# 3. 定义 CSS 样式 (这是核心“插件”部分)# 我们利用 HTML 的 id 选择器来精准控制按钮样式definject_custom_css(is_big):# 定义大按钮和小按钮的样式ifis_big:# 变大:宽度 100%,高度 80px,字体变大style=""" <style> #my-custom-btn { width: 100% !important; height: 80px !important; font-size: 24px !important; background-color: #ff4b4b !important; /* 变红 */ transition: all 0.3s ease; /* 增加一点过渡动画 */ } </style> """else:# 变小:宽度自动,高度默认,字体正常style=""" <style> #my-custom-btn { width: auto !important; height: 40px !important; font-size: 16px !important; background-color: #00ccff !important; /* 变蓝 */ transition: all 0.3s ease; } </style> """# 将 CSS 注入到页面头部st.markdown(style,unsafe_allow_html=True)# --- 页面主逻辑 ---st.title("🔘 按钮变大变小演示")st.write("点击下方的按钮,观察它的变化。")# 4. 注入当前的 CSS 样式inject_custom_css(st.session_state.is_big)# 5. 创建按钮# key 参数非常重要,它决定了按钮的唯一标识# 我们给它指定一个 id (通过 help 或 key 的某种方式,但这里我们主要靠 CSS 覆盖)# 注意:Streamlit 原生按钮没有直接的 id 属性,我们需要用一种技巧来选中它# 这里我们用一个简单的逻辑:如果是大状态,我们渲染一个全宽的按钮,否则渲染普通按钮col1,col2=st.columns([1,1])withcol1:# 这是一个逻辑按钮,点击它会改变状态ifst.button("🪄 切换状态 (逻辑控制)",use_container_width=False):# 切换状态st.session_state.is_big=notst.session_state.is_big# 强制重跑(其实点击按钮本身就会重跑,这里是为了逻辑清晰)st.rerun()withcol2:# 这是一个视觉按钮 (我们要改变它的大小)# 技巧:Streamlit 的 st.button 无法直接加 id,# 所以我们用 st.markdown 模拟一个按钮,或者利用 st.form_submit_button 的 hack# 但最简单的方法是:直接改变布局!ifst.session_state.is_big:# 如果状态是“大”,我们就让按钮占满整行 (use_container_width=True)ifst.button("我是大按钮!(点击缩小)",use_container_width=True,key="visual-btn"):st.session_state.is_big=Falsest.rerun()else:# 如果状态是“小”,我们就让按钮只占内容宽度ifst.button("我是小按钮 (点击变大)",use_container_width=False,key="visual-btn"):st.session_state.is_big=Truest.rerun()# 6. 显示当前状态st.write(f"当前状态:**{'巨大模式'ifst.session_state.is_bigelse'普通模式'}**")

2、终端输入命令运行:

streamlit run custom_app.py
引入第三方插件
streamlit的项目结构
my_streamlit_app/# 1. 根目录(手动新建文件夹)├──.venv/# 2. 虚拟环境(自动/手动生成,不要动里面的代码)├── pages/# 3. 【关键】多页面目录(必须叫这个名字!)│ ├── 1_📊_数据看板.py# 文件名决定页面顺序和标题│ └── 2_⚙️_设置.py ├── assets/# 4. 静态资源(图片、CSS,手动新建)├── utils/# 5. 工具函数(封装 LMEval 逻辑,手动新建)│ └── runner.py ├── data/# 6. 存放评测结果 JSON 等临时数据├── requirements.txt# 7. 依赖文件(手动生成:pip freeze > requirements.txt)└── Home.py# 8. 主入口(手动新建,Streamlit 默认运行这个)

其他

文档

streamlit官网文档:
https://docs.streamlit.io/

streamlit官网-原件库(从这里找元件):
https://streamlit.io/components

http://www.cnnetsun.cn/news/1676494.html

相关文章:

  • 告别模糊边界!用DeepLabv3+在Cityscapes数据集上实现像素级街景分割(附PyTorch实战代码)
  • 从‘正在加载’到‘用户体验’:用Qt QProgressDialog打造更友好的长时间任务交互(附模态/非模态选择指南)
  • 番茄小说下载器:为离线阅读爱好者打造的全能工具
  • **AI仿真人剧企业2025推荐,沉浸式交互体验与多场景商业落地解析**据中国信通院2025数字内容与人工智能融合应用白皮书显示,2025年国内AI仿真人剧市场规模预计突破120亿元,但能提供完整
  • 2025最权威的降重复率方案实际效果
  • 如何快速部署DeepQA:10分钟搭建你的第一个AI聊天机器人
  • java常见面试题杂记
  • SEO 关键字优化与内容营销的结合方法是什么
  • 解决Telegraf Kafka插件与Kafka 4.0兼容性问题:从报错到修复全指南
  • Extism终极指南:如何用WebAssembly框架构建可扩展应用
  • 计算机毕业设计:Python轨道交通数据可视化系统 Flask框架 数据分析 可视化 高德地图 数据挖掘 机器学习 爬虫(建议收藏)✅
  • Vue-Weixin 朋友圈功能实现全解析:图片上传与点赞评论交互详解
  • AI仿真人剧厂家2025推荐,提供定制化剧情服务
  • Docker 快速通关
  • Cats函数式编程终极指南:Parallel、Traverse、Foldable三大核心特性深度解析
  • COMSOL模拟管道电化学腐蚀与冲蚀
  • 打造专业视频编辑App时间线:基于android-advancedrecyclerview的终极拖拽实现指南
  • C++23 增强的 constexpr:在编译期完成复杂的路由哈希表构建与协议状态机合法性静态验证
  • FastBle单元测试终极指南:Mockito在Android蓝牙BLE开发中的7个实战技巧
  • 终极指南:@hapi/boom 如何简化 HTTP 错误处理
  • Java8核心能力篇-Lambda-Stream-Optional与日期时间
  • Claude Code每日更新速览(v2.1.91)-2026/04/03
  • HAA固件深度解析:从架构设计到核心组件实现原理
  • PromptSource模板推荐系统:基于任务自动选择最优提示的终极指南
  • AD9959 FPGA驱动开发:实现全通道FPA自由调控与任意FPGA移植
  • ai辅助开发:让快马平台智能诊断并生成最优的wsl ubuntu环境配置方案
  • S-UI缓存策略设计:API响应与静态资源缓存
  • OpenClaw内存优化:Qwen3-14B镜像在120GB内存下的性能调优
  • 基于三角波注入的永磁同步电机参数辩识:Simulink仿真模型及相关文章
  • hello-uniapp分包加载策略:解决小程序体积过大问题