当前位置: 首页 > 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.jsqmd.com/news/582938/

相关文章:

  • R-Studio实战评测:对比三款软件后,它为何成了我的数据恢复首选?
  • 06_语义网之SKOS知识组织系统
  • **AI仿真人剧企业2025推荐,沉浸式交互体验与多场景商业落地解析**据中国信通院2025数字内容与人工智能融合应用白皮书显示,2025年国内AI仿真人剧市场规模预计突破120亿元,但能提供完整
  • 仿美团饿了么外卖系统源码解析:构建高效外卖平台的技术指南
  • **React 项目实战:从状态管理到性能优化的全流程精讲**在现代前端开发中,*
  • GESP2025年3月认证C++三级( 第三部分编程题(2、词频统计)
  • 拟南芥基因家族序列的高效提取与ID处理技巧
  • docker 安装 MrDoc
  • OriginPro 2023保姆级教程:三步搞定柱状图+点线图组合,让你的科研图表颜值飙升
  • CT107D开发板实战:从零搭建51单片机红外遥控系统(附完整代码)
  • 基于S7-200 PLC的教室灯控制系统的全面设计与实现:电气设计、程序设计及组态王的应用
  • **AI仿真人剧厂家2025推荐,专业定制与沉浸式体验的行业标杆**据中国信通院2025年人工智能数字内容产业白皮书显示,2025年国内AI仿真人剧市场规模预计突破120亿元,年增长率高达65%。
  • 2025最权威的降重复率方案实际效果
  • 告别黑屏!用Wireshark+RSView调试速腾雷达,一次讲清IP、端口和点云显示的逻辑
  • 嘎嘎降AI和去AIGC哪个更适合文科论文?深度对比评测
  • 建议收藏!我开发了一个免费无限制的AI绘画公益站!
  • 暗黑破坏神2存档修改神器:从入门到精通的完整指南
  • 若依框架代码生成器深度使用指南:从单表生成到理解其MVC代码结构
  • Python实战:5分钟搞定Infoway期货行情API接入(附完整代码)
  • 基于四轮转向与模型预测控制的轨迹跟踪控制策略及其转角分配研究——前轮与四轮转向轨迹跟踪效果对比
  • ViGEmBus技术指南:构建跨平台游戏控制器兼容解决方案
  • 四路抢答器这玩意儿在竞赛现场特别实用,今天咱们直接开整基于西门子S7-200 PLC和MCGS触摸屏的实现方案。老规矩,先从硬件接线开始唠
  • 如何用LAMP.sh构建企业级Web应用环境?完整部署方案解析
  • 2025届学术党必备的六大降重复率平台实际效果
  • Python-for-Android终极指南:用Python代码打造原生Android应用
  • 开关电源12种拓扑功率器件选型指南
  • OpenClaw效率对比:人工vsQwen2.5-VL-7B处理100张图片耗时测试
  • Spring AI 助力 Java 开发者构建全功能 AI 智能体
  • 搞懂PLC换热站控制,从组态开始动手
  • NodeGit自定义扩展开发终极指南:如何为特定需求创建专属Git工具