Streamlit入門

1、Streamlit是什么

Streamlit 是一個用于快速構建數據應用的開源 Python 庫,由 Streamlit 公司開發并維護。它極大地簡化了從數據腳本到交互式 Web 應用的轉化過程,讓開發者無需具備前端開發的專業知識,就能輕松創建出美觀、實用的交互式應用。

Streamlit≈前端框架+后端框架+云服務器

2、基本使用方法

基本組件

1、pip install streamlit

2、測試是否安裝成功:streamlit hello(一個示例網頁)

如果沒有立即自動跳轉到網頁,而是像這樣:

則再在Email行輸入回車即可

3、import streamlit as st

4、運行自定義網頁,streamlit run .\test1.py(streamlit run +?Python腳本的路徑)

5、終止服務器,按ctrl+C即可

6、點擊網頁右上角的rerun,讓代碼改動在網頁上生效;

Always rerun可以一邊修改代碼,一邊生效(要手動保存后)。

import streamlit as st
import pandas as pd# 可以傳markdown語法的參數
st.write("### 新年快樂")# 省略.write也可以直接打印
123a=10
a[11,22,33]{"a":"1","b":"2","c":3}# 大標題
st.title("我的個人網站💡")# 圖片
st.image("E:\streamlit\source\image.png",width=300)# 表格
data={ #創建一個包含學生信息的字典(鍵是列名)'姓名': ['張三', '李四', '王五'],'年齡': [20, 21, 22],'成績': [85, 90, 78]
}df=pd.DataFrame(data) #使用字典創建DataFramest.dataframe(df) #顯示表格,直接寫df也可以————交互式表格
dfst.divider() #分割線st.table(df) #非交互式靜態表格
import streamlit as st# 文字輸入
name = st.text_input("請輸入你的名字:")
if name:st.write(f"你好,{name}")st.divider()# 將text_input的type值定為password,就是輸入密碼了
password=st.text_input("請輸入密碼:",type="password")st.divider()# 輸入長文本,要用到大區域,可以手動調節文本框的長度
paragraph = st.text_area("請輸入你的自我介紹:")st.divider()# 數字輸入
age=st.number_input("請輸入你的年齡:",value=20,min_value=0,max_value=150,step=1)
st.write(f"你的年齡是:{age}歲")st.divider()# 勾選框
checked = st.checkbox("我同意以上條款") # 勾選了就返回true,否則是false
if checked:st.write("感謝您的同意!")st.divider()# 按鈕
submitted = st.button("提交")
if submitted:st.write("提交成功!")

streamlit什么時候會重新運行整個文件呢?

1、對源代碼進行修改后

2、用戶與組件進行了交互后(比如輸入文本并回車,點擊了按鈕,拖動了滑塊),

文件就會從頭到尾重新運行,從而對里面的一些變量值進行更新

注意:使用number_input時,將step設置為1,就限制了輸入值最終只能是整數?

number_input的另一個參數:?

import streamlit as st# 單選按鈕
gender = st.radio("你的性別是什么", ["男性","女性","跨性別"], #options選項:可迭代對象,列表或元組index=None) #index設置初始選中的選項索引,默認為0,設置等于None值時無初始設置
if gender:st.write(f"你選擇的性別是{gender}")st.divider()# 單選框
contact = st.selectbox("你希望通過什么方式聯系?",["微信","QQ","郵箱","電話","其它"])
st.write(f"好的,我們會通過{contact}聯系你")st.divider()# 多選框
fruits = st.multiselect("你喜歡的水果是什么?",["蘋果","西瓜","橙子","香蕉"]) #返回的是選中元素組成的列表
for fruit in fruits:st.write(f"你選擇的水果是{fruit}")st.divider()# 滑塊(通過拖動來選擇數字)
height = st.slider("你的身高是多少厘米?",value=160.0,min_value=100.0,max_value=230.0,step=0.5)
st.write(f"你的身高是{height}厘米")st.divider()# 文件上傳器
uploaded_file = st.file_uploader("請上傳你的文件",type=["py"]) #type參數限制了可以上傳的文件類型,"py"表示python代碼文件
## 如果用戶沒有上傳文件,uploaded_file 的值為 None;如果用戶上傳了文件,uploaded_file 是 UploadedFile 類的一個實例,該實例包含了上傳文件的相關信息,如文件名、文件內容等。
if uploaded_file:st.write(f"你上傳的文件是{uploaded_file.name}")st.write(f"文件內容如下:{uploaded_file.read().decode('utf_8')}")
## uploaded_file.read() 是 UploadedFile 類的一個方法,用于讀取上傳文件的內容。該方法返回一個字節字符串(bytes 類型),表示文件的二進制內容。
## 由于 uploaded_file.read() 返回的是字節字符串,如果文件是文本文件,在顯示時可能需要進行解碼操作,例如使用 uploaded_file.read().decode('utf-8') 將字節字符串解碼為 Unicode 字符串,以確保中文等非 ASCII 字符能夠正確顯示。

布局

側邊欄和列

import streamlit as st# 側邊欄
with st.sidebar:name = st.text_input("請輸入你的名字:")if name:st.write(f"你好,{name}")# 多列布局
# (column1,column2,column3) = st.columns(3) 將布局劃分為三列,并且將這三列分別賦值給變量 column1、column2 和 column3
(column1,column2,column3) = st.columns([1,2,1]) #當st.columns()的參數是一個數字列表時,列表中的每個元素代表對應列的相對寬度# 第一列里有什么(有縮進的才是):
with column1:password=st.text_input("請輸入密碼:",type="password")with column2:paragraph = st.text_area("請輸入你的自我介紹:")with column3:age=st.number_input("請輸入你的年齡:",value=20,min_value=0,max_value=150,step=1)st.write(f"你的年齡是:{age}歲")st.divider()checked = st.checkbox("我同意以上條款") 
if checked:st.write("感謝您的同意!")st.divider()submitted = st.button("提交")
if submitted:st.write("提交成功!")

選項卡和折疊展開

import streamlit as st# 創建標簽頁界面的函數。它接收一個列表作為參數,列表中的每個元素代表一個標簽頁的標題。
# 返回值是一個包含多個標簽頁對象的元組
(tab1,tab2,tab3) = st.tabs(["性別","聯系方式","喜好水果"])with tab1:gender = st.radio("你的性別是什么", ["男性","女性","跨性別"], index=None) if gender:st.write(f"你選擇的性別是{gender}")with tab2:contact = st.selectbox("你希望通過什么方式聯系?",["微信","QQ","郵箱","電話","其它"])st.write(f"好的,我們會通過{contact}聯系你")with tab3:fruits = st.multiselect("你喜歡的水果是什么?",["蘋果","西瓜","橙子","香蕉"]) for fruit in fruits:st.write(f"你選擇的水果是{fruit}")st.divider()# 折疊展開組件:展示非關鍵信息,平時折疊,需要時展開,提高頁面上的信息展示效率
# with st.expander("展開區域標題"):
with st.expander("身高信息"):height = st.slider("你的身高是多少厘米?",value=160.0,min_value=100.0,max_value=230.0,step=0.5)st.write(f"你的身高是{height}厘米")st.divider()uploaded_file = st.file_uploader("請上傳你的文件",type=["py"]) 
if uploaded_file:st.write(f"你上傳的文件是{uploaded_file.name}")st.write(f"文件內容如下:{uploaded_file.read().decode('utf_8')}")

?會話狀態

?當我們打開一個新的瀏覽器標簽,進入到這個網頁,就是一個新的會話。關閉標簽,會話才結束。

會話狀態可以保留和共享用戶會話中的變量,只要用戶沒有關閉標簽,會話中的狀態就可以被保留。

import streamlit as stif "a" not in st.session_state: # 如果a還沒在會話狀態中st.session_state.a=0 # 則把a加入會話狀態,并賦值為0clicked = st.button("加1")
if clicked:st.session_state.a += 1
st.write(st.session_state.a)   print(st.session_state) #{'a': 10}

多頁面網站?

把多個頁面歸在同一個網站,而不是每個頁面單獨一個網站

1、選擇其中一個頁面作為主頁(比如page1.py)

2、把剩下的頁面移動到pages文件夾下,必須叫pages

3、streamlit run page1.py即可

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/894466.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894466.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894466.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習算法在網絡安全中的實踐

機器學習算法在網絡安全中的實踐 本文將深入探討機器學習算法在網絡安全領域的應用實踐,包括基本概念、常見算法及其應用案例,從而幫助程序員更好地理解和應用這一領域的技術。"> 序言 網絡安全一直是信息技術領域的重要議題,隨著互聯…

Rust 所有權特性詳解

Rust 所有權特性詳解 Rust 的所有權系統是其內存安全的核心機制之一。通過所有權規則,Rust 在編譯時避免了常見的內存錯誤(如空指針、數據競爭等)。本文將從堆內存與棧內存、所有權規則、變量作用域、String 類型、內存分配、所有權移動、Cl…

MVS pythonSamples 運行環境配置

1.首先計算機:操作系統Win10_X64 22H2; 2.MVS V4.4.0 3.python3.8.8_64; 安裝時勾選添加path; 最后安裝依賴包:(所有必須安裝) 圖像處理: mvtec-halcon23050(可選) p…

java練習(5)

ps:題目來自力扣 給你兩個 非空 的鏈表,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式存儲的,并且每個節點只能存儲 一位 數字。 請你將兩個數相加,并以相同形式返回一個表示和的鏈表。 你可以假設除了數字 0 之外,這…

[EAI-023] FAST,機器人動作專用的Tokenizer,提高VLA模型的能力和訓練效率

Paper Card 論文標題:FAST: Efficient Action Tokenization for Vision-Language-Action Models 論文作者:Karl Pertsch, Kyle Stachowicz, Brian Ichter, Danny Driess, Suraj Nair, Quan Vuong, Oier Mees, Chelsea Finn, Sergey Levine 論文鏈接&…

PHP Composer:高效依賴管理工具詳解

PHP Composer:高效依賴管理工具詳解 引言 在PHP開發領域,依賴管理是項目構建過程中的重要環節。Composer的出現,極大地簡化了PHP項目的依賴管理,使得開發者可以更加高效地構建和維護PHP應用程序。本文將深入探討PHP Composer的使用方法、功能特點以及它在項目開發中的應用…

CodeGPT使用本地部署DeepSeek Coder

目前NV和github都托管了DeepSeek,生成Key后可以很方便的用CodeGPT接入。CodeGPT有三種方式使用AI,分別時Agents,Local LLMs(本地部署AI大模型),LLMs Cloud Model(云端大模型,從你自己…

黑盒/白盒運維監控

運維監控分為黑盒和白盒 黑盒:不深入代碼,在系統角度看TPS,延遲等指標 白盒:深入代碼分析,通過日志捕捉,以及主動上報告警等來進行監控 黑盒監控: 1. 頁面功能:域名是否可訪問&…

Rust 中的注釋使用指南

Rust 中的注釋使用指南 注釋是代碼中不可或缺的一部分,它幫助開發者理解代碼的邏輯和意圖。Rust 提供了多種注釋方式,包括行注釋、塊注釋和文檔注釋。本文將詳細介紹這些注釋的使用方法,并通過一個示例展示如何在實際代碼中應用注釋。 1. 行…

可被electron等調用的Qt截圖-錄屏工具【源碼開放】

1. 工具功能簡介: (1)、QT5.15.2截圖工具(exe)可單獨使用或嵌入IM(嵌入方法參照:https://gitee.com/lykiao/yfscreenshot_release) (2)、支持通過Windows消息通知截圖成功或取消 (3)、支持圓形、矩形、線條…

ubuntu系統入門流程

學習流程 安裝雙系統(win11ubuntu隨便啥版本,博客里面下的時候自己選) ->了解一下常見的操作系統類-> 了解ubuntu系統常見文件目錄是做什么的- > 了解一些ubuntu常用指令 ->安裝常用的軟件(qq、vx,學習的…

STM32單片機學習記錄(2.2)

一、STM32 13.1 - PWR簡介 1. PWR(Power Control)電源控制 (1)PWR負責管理STM32內部的電源供電部分,可以實現可編程電壓監測器和低功耗模式的功能; (2)可編程電壓監測器(…

韓語字符分析

查看unicode文檔,發現韓語字符有11172個,這是192128,其實就是19212868個符號的排列組合。分析如下: 第一部分: ??????????????????? 去掉右邊的那個“卜”,共19個符號。 第二部分&#…

基于SpringBoot的智慧康老療養院管理系統的設計與實現(源碼+SQL腳本+LW+部署講解等)

專注于大學生項目實戰開發,講解,畢業答疑輔導,歡迎高校老師/同行前輩交流合作?。 技術范圍:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:…

goframe 博客分類文章模型文檔 主要解決關聯

goframe 博客文章模型文檔 模型結構 (BlogArticleInfoRes) BlogArticleInfoRes 結構體代表系統中的一篇博客文章,包含完整的元數據和內容管理功能。 type BlogArticleInfoRes struct {Id uint orm:"id,primary" json:"id" …

MQTT知識

MQTT協議 MQTT 是一種基于發布/訂閱模式的輕量級消息傳輸協議,專門針對低帶寬和不穩定網絡環境的物聯網應用而設計,可以用極少的代碼為聯網設備提供實時可靠的消息服務。MQTT 協議廣泛應用于物聯網、移動互聯網、智能硬件、車聯網、智慧城市、遠程醫療、…

Python(Pandas)數據分析學習

1.Pandas基本構成 引入Pandas import pandas as pd 1.Series 行 對應Excel中的一行數據,一維數據 定義Series # 第一個參數是具體數據 # 第二個參數的對應的索引下標 # 第三個參數的行名稱 data pd.Series([1,2,3,4,5], index[a,b,c,d,e], namedata) print(d…

我用Ai學Android Jetpack Compose之Card

這篇學習一下Card。回答來自 通義千問。 我想學習Card,麻煩你介紹一下 當然可以!在 Jetpack Compose 中,Card 是一個非常常用的組件,用于創建帶有陰影和圓角的卡片式布局。它可以幫助你輕松實現美觀且一致的 UI 設計&#xff0c…

圖漾相機——C++語言屬性設置

文章目錄 前言1.SDK API功能介紹1.1 Device組件下的API測試1.1.1 相機工作模式設置(TY_TRIGGER_PARAM_EX)1.1.2 TY_INT_FRAME_PER_TRIGGER1.1.3 TY_INT_PACKET_DELAY1.1.4 TY_INT_PACKET_SIZE1.1.5 TY_BOOL_GVSP_RESEND1.1.6 TY_BOOL_TRIGGER_OUT_IO1.1.…

STM32 TIM定時器配置

TIM簡介 TIM(Timer)定時器 定時器可以對輸入的時鐘進行計數,并在計數值達到設定值時觸發中斷 16位計數器、預分頻器、自動重裝寄存器的時基單元,在72MHz計數時鐘下可以實現最大59.65s的定時 不僅具備基本的定時中斷功能&#xff…