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

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