首頁 > 後端開發 > Python教學 > Streamlit 部分母帶佈局

Streamlit 部分母帶佈局

Linda Hamilton
發布: 2024-11-05 21:39:02
原創
976 人瀏覽過

Streamlit Part Mastering Layouts

掌握 Streamlit 中的佈局:逐步指南

Streamlit 是一種廣泛使用的框架,用於建立互動式Python 應用程序,特別是資料視覺化、儀表板和機器學習演示,它不僅因其用戶友好性而脫穎而出,還因其創建視覺吸引力和直覺佈局的能力。在這篇文章中,我們將引導您完成一個 Python 範例,示範如何在 Streamlit 中有效利用佈局元素,例如列、容器、佔位符等。

讓我們來分解一下可以用來使您的應用程式更乾淨、更具互動性的佈局技術。

準備工作:頁面配置

在進入佈局元素之前,我們使用 st.set_page_config() 設定頁面。此方法可讓您在應用程式載入時自訂頁面標題、圖示、版面配置和側邊欄行為。

st.set_page_config(
    page_title="Streamlit Layouts Tutorial",
    page_icon=":art:",
    layout="wide",
    initial_sidebar_state="collapsed",
)

登入後複製
登入後複製

在這裡,我們為頁面指定一個標題,將佈局設為「寬」(利用整個瀏覽器寬度),並最初折疊側邊欄以獲得更清晰的外觀。

1. 用列構建

Streamlit 中最強大的佈局工具之一是列。它們允許您並排顯示內容,使您的應用程式看起來更有條理、更具視覺吸引力。

st.header("Columns")
st.write("Using `st.columns()` to create columns.")

# Create two columns
col1, col2 = st.columns(2)

col1.write("This is column 1")
if col1.button("Button in Column 1"):
    col1.write("Button 1 pressed")

col2.write("This is column 2")
if col2.button("Button in Column 2"):
    col2.write("Button 2 pressed")

登入後複製
登入後複製

在此程式碼片段中,我們建立兩列並在每列中放置按鈕。各列均勻分割,一列中的任何互動都不會影響另一列。

為什麼是專欄?

列非常適合併排顯示相關信息,例如數據摘要、圖表或互動式控制項。

2. 用容器分組

接下來是容器元素。 Streamlit 中的容器可讓您將多個元素分組在一起,從而更輕鬆地管理複雜的佈局。

st.header("Container")
st.write("Using `st.container()` to group elements together.")

with st.container():
    st.write("This is inside a container")
    st.button("Button inside container")

    # Nested container
    with st.container():
        st.write("This is a nested container")
        st.button("Button inside nested container")

登入後複製
登入後複製

在此範例中,st.container() 方法將多個元素(文字和按鈕)包裝在一起。您甚至可以將容器嵌套在一起以建立分層佈局。

為什麼選擇容器?

容器有助於維護乾淨且分組的結構,尤其是在處理邏輯上屬於在一起的多個內容部分時。

3. 使用佔位符動態更新

Streamlit 的一個強大功能是它能夠動態更新內容。這是使用 st.empty() 完成的,它充當佔位符,您可以稍後更新。

st.header("Empty")
st.write("Using `st.empty()` as a placeholder for updating content.")

placeholder = st.empty()

# Update the placeholder content dynamically
for i in range(5):
    placeholder.write(f"Updating... {i}")
    time.sleep(1)

placeholder.write("Done!")

登入後複製
登入後複製

在此範例中,我們使用 for 迴圈每秒以新值更新佔位符。循環完成後,我們將佔位符內容替換為「完成!」

為什麼要使用佔位符?

佔位符非常適合您需要動態更新應用程式的某些部分而不重新執行整個應用程式的情況,例如即時資料來源或進度更新。

4. 使用擴充器隱藏和顯示

可擴充部分非常適合隱藏進階設定或您不想弄亂主佈局的附加資訊。

st.set_page_config(
    page_title="Streamlit Layouts Tutorial",
    page_icon=":art:",
    layout="wide",
    initial_sidebar_state="collapsed",
)

登入後複製
登入後複製

在這裡,我們將一些內容和一個按鈕包裝在擴展器內,用戶可以點擊該按鈕來顯示或隱藏內容。

為什麼選擇擴展器?

擴展器透過隱藏不太重要或高級的選項來幫助保持介面整潔,同時仍然可以在需要時輕鬆存取它們。

5. 建立表格

Streamlit 表單可讓您將輸入小工具分組在一起並等待使用者一次提交所有內容,而不是單獨對每個輸入做出反應。

st.header("Columns")
st.write("Using `st.columns()` to create columns.")

# Create two columns
col1, col2 = st.columns(2)

col1.write("This is column 1")
if col1.button("Button in Column 1"):
    col1.write("Button 1 pressed")

col2.write("This is column 2")
if col2.button("Button in Column 2"):
    col2.write("Button 2 pressed")

登入後複製
登入後複製

在此範例中,我們使用表單來收集使用者的姓名和年齡,只有在使用者點擊提交按鈕後,Streamlit 才會處理輸入。

為什麼要使用表格?

表單確保輸入操作被分組並批量提交,這非常適合用戶註冊或資料過濾等情況。

6. 新增側邊欄

側邊欄對於導航、應用程式設定或不會擾亂主介面的額外選項很有用。

st.header("Container")
st.write("Using `st.container()` to group elements together.")

with st.container():
    st.write("This is inside a container")
    st.button("Button inside container")

    # Nested container
    with st.container():
        st.write("This is a nested container")
        st.button("Button inside nested container")

登入後複製
登入後複製

此程式碼會為側邊欄新增一個按鈕,該按鈕預設折疊,但可以由使用者展開。

為什麼要使用側邊欄?

側邊欄非常適合輔助內容,例如導航連結、過濾器或應用程式設置,這些內容始終可以訪問,但不需要佔用主佈局中的空間。

7. 使用選項卡導航

選項卡是在單一部分中組織內容的好方法,允許使用者在不離開頁面的情況下在不同視圖之間切換。

st.header("Empty")
st.write("Using `st.empty()` as a placeholder for updating content.")

placeholder = st.empty()

# Update the placeholder content dynamically
for i in range(5):
    placeholder.write(f"Updating... {i}")
    time.sleep(1)

placeholder.write("Done!")

登入後複製
登入後複製

在此範例中,我們使用三個選項卡來顯示與動物相關的不同內容。每個選項卡都是獨立的並包含自己的內容。

為什麼是標籤?

選項卡非常適合將相關內容組織成不同的部分,例如不同的資料視圖或資訊類別,而不需要單獨的頁面。

結論

掌握 Streamlit 的佈局元素使您能夠創建乾淨、互動式且用戶友好的應用程式。透過熟練地使用列、容器、佔位符、擴展器、表單、側邊欄和選項卡,您可以有效地組織內容並增強整體使用者體驗。這些工具可讓您製作直覺的介面,引導使用者無縫地使用您的應用程式。


?取得程式碼:GitHub - jamesbmour/blog_tutorials
?相關Streamlit教學:JustCodeIt
?支持我的工作:請我喝杯咖啡

以上是Streamlit 部分母帶佈局的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板