使用 Streamlit 快速构建和部署网页
利用 Python 也能轻松创建美观的网站?答案是肯定的,Streamlit 可以做到这一点。 Streamlit 是一个能将 Python 脚本快速转化为可分享网站的工具。仅需纯 Python 编程,无需前端开发知识。即使你仅熟悉 markdown,按照特定规则编写也能构建网页。此外,它还支持免费部署。 安装 首先,确保你的计算机已安装 Python 环境。若尚未安装,请访问 Python 官网进行下载并按照相关教程完成安装。 安装 Python 后,使用以下命令安装 Streamlit: pip install streamlit 安装完成后,通过以下命令验证 Streamlit 是否正确安装: streamlit hello 打开浏览器访问 http://192.168.31.83:8502,若看到相应界面,则说明 Streamlit 已成功安装。 运行 安装好 Streamlit 后,创建一个新的文件夹并在此文件夹中创建一个 Python 文件。 使用终端进入该文件夹并运行指定的 Python 文件: streamlit run xxx.py 例如,创建一个名为 streamlit-demo1 的文件夹,并在其中创建一个 page1.py 文件。接着,通过终端进入 streamlit-demo1 目录并执行以下命令: streamlit run page1.py 终端会提示你打开相应的地址,例如 http://localhost:8501。访问此地址后,若看到类似界面,则说明运行成功。 基础用法 接下来,我们将探索 Streamlit 的一些基本用法,其难度与 HTML 类似,但 Streamlit 提供了许多预设样式,减少了编写 CSS 的需求。 使用 Streamlit 之前,需要先导入它: import streamlit as st 段落 段落在 HTML 中对应 <p> 标签,在 Streamlit 中使用 st.write('内容') 来书写: st.write('Hello!') 标题 使用 st.title() 可设置标题内容: st.title('Hello') 与 st.write() 不同,st.title() 生成的内容字号更大且字体加粗。 Markdown Streamlit 支持使用 Markdown 语法编写内容。只需使用单引号或双引号包裹内容,并使用 Markdown 语法即可。 "# 一级标题" "## 二级标题" "### 三级标题" "#### 四级标题" "##### 五级标题" "###### 六级标题"
"""
print('Hello')
"""
图片 渲染图片可以使用 st.image() 方法: st.image('./dog.jpg', width=400) 表格 Streamlit 支持静态表格和交互式表格。 静态表格 使用 st.table() 渲染静态表格: import pandas as pd
data = { "Name": ["Alice", "Bob"], "Age": [25, 30] }
st.table(data)
交互式表格 使用 st.dataframe() 渲染交互式表格: df = pd.DataFrame({ "Name": ["Alice", "Bob"], "Age": [25, 30] })
st.dataframe(df)
分隔线 使用 st.divider() 方法绘制分隔线: st.divider() 变量和条件判断 在 Streamlit 中可以使用 Python 变量和条件判断语句: a = 10 b = 20
if a % 2 == 0: st.write(f'{a} is even') else: st.write(f'{a} is odd')
循环 使用 for 循环: for i in range(1, 10, 2): st.write(i)
输入框 使用 st.text_input() 创建文本输入框: name = st.text_input('Enter you're name:')
if name: st.write(f'Hello, {name}')
数字输入框 使用 st.number_input() 创建数字输入框: age = st.number_input('Age:', value=20, min_value=0, max_value=200, step=1)
st.write(f'You entered age {age}')
多行文本框 使用 st.text_area() 创建多行文本框: paragraph = st.text_area('Enter multiple lines:')
复选框 使用 st.checkbox() 创建复选框: checked = st.checkbox("Agree to terms")
if checked: st.write("Agreed") else: st.write("Not agreed")
单选按钮 使用 st.radio() 创建单选按钮: result = st.radio( "Rate my article", ["Like", "Read more"] )
st.write(f"You selected: {result}")
单选下拉框 使用 st.selectbox() 创建单选下拉框: article = st.selectbox( "Which article do you like?", [ "Python Basics", "Data Analysis with Pandas", "Machine Learning with Scikit-learn" ] )
st.write(f"You selected: {article}")
多选下拉框 使用 st.multiselect() 创建多选下拉框: selected_articles = st.multiselect( "Which articles do you like?", [ "Python Basics", "Data Analysis with Pandas", "Machine Learning with Scikit-learn" ] )
for article in selected_articles: st.write(f"You selected: {article}")
滑块 使用 st.slider() 创建滑块: height = st.slider("Height", value=170, min_value=100, max_value=230, step=1)
st.write(f"Your height is {height}")
按钮 使用 st.button() 创建按钮: clicked = st.button("Click Me")
if clicked: st.write("Button was clicked!")
文件上传 使用 st.file_uploader() 创建文件上传组件: uploaded_file = st.file_uploader("Upload a file", type=["csv", "json"])
if uploaded_file: st.write(f"Uploaded file: {uploaded_file.name}")
侧边栏 使用 st.sidebar 创建侧边栏: with st.sidebar: search_term = st.text_input('Search:')
st.write(f'Search term: {search_term}')
多列布局 使用 st.columns() 创建多列布局: col1, col2, col3 = st.columns(3)
with col1: st.write('Column 1')
with col2: st.write('Column 2')
with col3: st.write('Column 3')
选项卡 使用 st.tabs() 创建选项卡: tab1, tab2, tab3 = st.tabs(['Tab 1', 'Tab 2', 'Tab 3'])
with tab1: st.write('Content of Tab 1')
with tab2: st.write('Content of Tab 2')
with tab3: st.write('Content of Tab 3')
折叠展开组件 使用 st.expander() 创建折叠展开组件: with st.expander('More Info'): st.title('Title') st.write('Some text')
图表 使用 st.line_chart() 绘制折线图: import numpy as np
chart_data = np.random.randn(10, 4)
st.line_chart(chart_data)
多页面 在 Streamlit 中创建多页面应用非常简单:
在根目录创建主页入口文件。 创建名为 pages 的文件夹。
在每个文件中编写内容后,启动应用即可看到多个页面。 部署 按照 Streamlit 官方文档,可以轻松部署应用至 Streamlit Cloud。 注册并登录后,上传代码至 GitHub 仓库,然后在 Streamlit Cloud 上填写相关信息并点击部署即可。