creating multipages in streamlit web using official docs

Page content

강의소개

  • 인프런에서 Streamlit 관련 강의를 진행하고 있습니다.
  • 인프런 : https://inf.run/YPniH

개요

Streamlit에서 multipage란 무엇인가?

  • 앱의 크기가 커질수록 다중 페이지 구성은 관리와 탐색의 용이성을 제공함.
  • Streamlit은 이를 쉽게 가능하게 하며, 클릭 한 번으로 해당 페이지에 빠르게 이동할 수 있다.

폴더 및 파일 구조

  • Home.py 파일을 만든 후에는 엔트리포인트 파일과 관련된 pages/about.py 파일을 만들어 페이지를 추가할 수 있다. 다음은 다중 페이지 앱에 유효한 디렉토리 구조는 아래와 같다.

Screenshot 2024-02-25 at 11.44.33 AM.png

Untitled

  • 각 pages 폴더에 있는 파일 이름들이 페이지의 목록으로 들어가는데 이 때 중요한 것은 기본적인 규칙을 준수해야 한다 (아래 파일명 규칙 메뉴에서 확인).

Web UI에서 Page Label 정렬하는 법

Page Label 테스트

파일명 : app.py

  • 먼저 app.py 의 코드는 다음과 같다.
# -*- coding:utf-8 -*-

import streamlit as st

def main():
    st.write("# Welcome to Streamlit! 👋")

if __name__ == "__main__":
    main()

Screenshot 2024-02-25 at 12.02.49 PM.png

pages 폴더 생성 및 파일 생성

  • pages 폴더를 생성한다.
  • 총 3개의 파일명을 생성한다. about.py, foo2.py, foo3.py
  • 각 파일명에 들어가는 코드는 아래와 같이 생성한다.
    • About 텍스트는 각 파일명 텍스트로 변경 후 처리한다.
# -*- coding:utf-8 -*-

import streamlit as st

st.set_page_config(
    page_title="About Page",
    page_icon="🧊",
    layout="wide",
    initial_sidebar_state="expanded",
    menu_items={
        'Get Help': 'https://www.naver.com',
        'Report a bug': "https://www.google.com",
        'About': "# This is a header. This is an *extremely* cool app!"
    }
)

def main():
    st.write("# About Page 👋")

if __name__ == "__main__":
    main()

Screenshot 2024-02-25 at 12.26.22 PM.png

  • 이 때, 코드상에 menu_items 은 오른쪽 메뉴에서 About 과 연관이 있다. 해당 메뉴를 선택해본다.

Screenshot 2024-02-25 at 12.28.13 PM.png

  • 만약 팝업 화면 이미지를 변경하고 싶다면 아래와 같이 추가한다. (about.py)
st.markdown(
    """
    <style>
    [aria-label="dialog"]{
        width: 90%;
        background-color: pink;
    }
    </style>
    """, unsafe_allow_html=True
)

Screenshot 2024-02-25 at 12.32.17 PM.png

  • 이번에는 Get Help를 선택한다. 그러면 네이버 화면으로 넘어갈 것이다. 마찬가지로 Report a bug 버튼을 누르면 Google 화면으로 넘어갈 것이다.

파일명 규칙

  • 파일명을 작성하려면 아래와 같은 규칙이 필요하다.
  • 예시로 확인하면 다음과 같다.

Screenshot 2024-02-25 at 12.34.40 PM.png

Streamlit multipages 라이브러리

Screenshot 2024-02-25 at 12.38.39 PM.png

  • 다음 시간에는 st-pages에 대해 알아보자.