Streamlit 다중 page 구성하기

Streamlit 다중 page 구성하기

Streamlit
Streamlit 다중 page 구성하기
Author

gabriel yang

Published

September 14, 2024


Streamlit의 page_link을 이용해서 다중 페이지 애플리케이션을 더 간편하게 만들 수 있습니다. 이 글에서는 다중 페이지 애플리케이션을 만드는 방법을 예시와 함께 설명하겠습니다.

프로젝트 구조 설정

프로젝트의 구조를 설정합니다. 각 페이지를 개별 파일로 작성하고, 메인 파일에서 페이지 전환을 관리합니다.

streamlit_app/
├── main.py
├── pages/test_1.py
└── pages/test_2.py

main.py - 홈 페이지

main.py는 애플리케이션의 메인 페이지를 정의합니다.

# main.py
import streamlit as st

# 사이드바에서 페이지 선택
selected_page = st.sidebar.page_link("main.py", label="Main")
selected_page = st.sidebar.page_link("pages/test_1.py", label="Test 1")
selected_page = st.sidebar.page_link("pages/test_2.py", label="Test 2")


def main():
    st.title("Main Page")
    st.write("Welcome to the main Page!")

main()

st.sidebar.page_link는 Streamlit에서 다중 페이지 앱 내의 다른 페이지로 또는 외부 URL로 이동할 수 있는 링크를 생성하는 기능입니다. 다른 페이지로 링크할 경우 클릭 시 해당 페이지로 이동하고, 외부 URL로 링크할 경우 새 탭에서 열립니다. 사용자는 링크에 라벨, 아이콘, 툴팁을 추가해 커스터마이징할 수 있습니다. 이를 통해 사용자는 멀티 페이지 앱을 생성할 수 있습니다.

test_1.py, test_2.py

test_1test_2 파일은 main에서 연결되는 멀티 페이지입니다.

# test_1.py
import streamlit as st

selected_page = st.sidebar.page_link("main.py", label="Main")
selected_page = st.sidebar.page_link("pages/test_1.py", label="Test 1")
selected_page = st.sidebar.page_link("pages/test_2.py", label="Test 2")

def main():
    st.title("Test 1 Page")
    st.write("Welcome to the Test 1 Page!")

main()
# test_2.py
import streamlit as st

selected_page = st.sidebar.page_link("main.py", label="Main")
selected_page = st.sidebar.page_link("pages/test_1.py", label="Test 1")
selected_page = st.sidebar.page_link("pages/test_2.py", label="Test 2")

def main():
    st.title("Test 2 Page")
    st.write("Welcome to the Test 2 Page!")

main()

페이지는 로딩시 다시 화면이 생성되기 때문에 각각의 페이지는 page_link를 통해서 side_bar의 페이지 링크를 재 생성합니다.

Session State

session_state는 Streamlit 멀티 페이지 앱에서 중요한 이유는 상태 유지와 데이터 공유 때문입니다. 페이지 간에 전환할 때, 기본적으로 Streamlit은 각 페이지가 독립적으로 새로 고쳐지며 이전 상태를 잃게 됩니다.

하지만 session_state를 사용하면 사용자 입력, 선택한 옵션, 페이지 상태 등을 앱의 전체 세션 동안 유지할 수 있습니다. 이를 통해 페이지 간 데이터를 공유하고, 사용자 경험을 향상시킬 수 있습니다. 예를 들어, 로그인 정보나 사용자 설정을 유지하는 데 사용됩니다.

애플리케이션 실행

애플리케이션을 실행하기 위해 터미널에서 다음 명령어를 입력합니다.

streamlit run main.py

Main Page Test 1 Page Test 2 Page

웹 브라우저에서 애플리케이션이 열리며, 사이드바에서 페이지를 선택할 수 있는 드롭다운 메뉴를 확인할 수 있습니다. 사용자가 메뉴에서 페이지를 선택하면, 선택된 페이지의 콘텐츠가 표시됩니다.

<h3>카테고리 다른 글</h3>
Date Title Author
Jan 1, 3000 전체 카테고리 gabriel yang
Sep 21, 2024 Streamlit 멀티 select 사용하기 gabriel yang
Sep 21, 2024 Streamlit selectbox를 사용하기 gabriel yang
Sep 19, 2024 Streamlit fragments 사용하기 gabriel yang
Sep 19, 2024 Streamlit form 사용하기 gabriel yang
Sep 19, 2024 Streamlit 데이터프레임 수정하기 gabriel yang
Sep 19, 2024 Streamlit fragments 사용하기 gabriel yang
Sep 18, 2024 Streamlit docker로 배포하기 gabriel yang
Sep 18, 2024 Streamlit 실시간 업데이트 사용하기 gabriel yang
Sep 18, 2024 Streamlit에서 다이얼로그 사용하기 gabriel yang
Sep 18, 2024 Streamlit의 유지보수와 디버깅 팁 gabriel yang
Sep 17, 2024 Streamlit cache_resource 사용하기 gabriel yang
Sep 16, 2024 Streamlit cache 사용하기 gabriel yang
Sep 15, 2024 Streamlit 데이터프레임 선택하기 gabriel yang
Sep 13, 2024 Streamlit Session_state 사용하기 gabriel yang
Sep 12, 2024 Streamlit을 활용한 기본 시각화 도구 gabriel yang
Sep 12, 2024 Streamlit에 Plotly 차트 적용하기 gabriel yang
Sep 11, 2024 Streamlit에서 파일 업로드하기 gabriel yang
Sep 11, 2024 Streamlit에 SQLite 데이터베이스 적용 gabriel yang
Sep 10, 2024 Streamlit UI 컴포넌트 소개 gabriel yang
Sep 9, 2024 Streamlit 사용 사례 gabriel yang
Sep 9, 2024 Streamlit 설치 및 환경설정 gabriel yang
Sep 9, 2024 Streamlit 애플리케이션 구조 이해 gabriel yang
Sep 9, 2024 Streamlit layout 설정하는 방법 gabriel yang
Sep 8, 2024 Streamlit이란 무엇인가요? gabriel yang
Sep 6, 2024 Streamlit Cloud로 앱 배포하기 gabriel yang
No matching items
Back to BLOG LIST