st.columns()를 사용하면 한 페이지 안에서 여러 개의 수직 열(Column)을 만들어 레이아웃을 구성할 수 있습니다. 비율을 지정하면 열의 너비를 조정할 수 있어, 원하는 디자인을 간단히 만들 수 있습니다.import streamlit as st
st.title("컬럼(Column) 예시")
# 페이지를 세 개의 세로 열로 나눕니다.
col1, col2, col3 = st.columns(3)
with col1:
st.header("A cat")
st.image("https://static.streamlit.io/examples/cat.jpg")
with col2:
st.header("A dog")
st.image("https://static.streamlit.io/examples/dog.jpg")
with col3:
st.header("An owl")
st.image("https://static.streamlit.io/examples/owl.jpg")
st.columns() 함수의 인자로 비율을 지정하여 열 간의 너비 비율을 조정할 수 있습니다. 이를 통해 원하는 대로 레이아웃을 맞출 수 있습니다.st.set_page_config(
page_title="QA/AC streamlit App",
page_icon="🧊",
layout="wide")
st.video("https://www.youtube.com/watch?v=pSUydWEqKwE")# 열의 너비 비율을 조정합니다.
col1, col2, col3 = st.columns([1, 2, 1])
with col2:
st.video("https://www.youtube.com/watch?v=pSUydWEqKwE")st.expander는 접을 수 있는 UI 컴포넌트를 제공하여, 사용자에게는 핵심 내용만 보이게 하고 자세한 내용은 펼쳐볼 수 있도록 할 수 있습니다.st.title("Expander 예시")
with st.expander("📺 요즘 OTT 플랫폼에서 뜨는 작품들"):
st.write("""
- **더 글로리**: 화제의 드라마, 역대급 복수극!
- **피지컬: 100**: 서바이벌 예능 열풍!
- **오징어 게임**: 전 세계를 휩쓴 한국형 데스게임!
""")
st.write("더 자세한 줄거리는 스포일러 방지를 위해 생략!")
with st.expander("⏰ 오늘의 소셜 미디어 소식"):
st.write("""
- 틱톡에서 난리 난 '#쿠쿠다스챌린지'
- 인스타그램 릴스, 짧은 영상 편집 팁 공유하기
- 재테크/절약 관련 '챌린지'도 인기 상승 중!
""")
st.tabs()를 사용하면 페이지 내에서 탭을 생성하여 콘텐츠를 구분할 수 있습니다. 각 탭에는 개별적으로 콘텐츠를 추가할 수 있습니다.# 세 개의 탭을 생성합니다.
tab1, tab2, tab3 = st.tabs(["Cat", "Dog", "Owl"])
with tab1:
st.header("A cat")
st.image("https://static.streamlit.io/examples/cat.jpg", width=200)
with tab2:
st.header("A dog")
st.image("https://static.streamlit.io/examples/dog.jpg", width=200)
with tab3:
st.header("An owl")
st.image("https://static.streamlit.io/examples/owl.jpg", width=200)
st.sidebar를 사용하면 페이지의 사이드바를 생성할 수 있습니다. 사이드바는 페이지의 추가 옵션이나 내비게이션 메뉴를 제공하는 데 유용합니다.# 사이드바를 생성하고, 라디오 버튼을 추가합니다.
with st.sidebar:
add_radio = st.radio(
"Choose a shipping method",
("Standard (5-15 days)", "Express (2-5 days)")
)홈: 앱 소개, 전체 요약
생산 데이터: 하루 생산량, 생산 라인별 분석
품질 관리: 불량률, 불량 유형 모니터링
예지 보전: 설비 고장 예측, 유지보수 계획
이렇게 주제별로 페이지를 나누면, 사용자도 쉽게 원하는 부분을 찾아갈 수 있습니다.
st.Page란 무엇인가? `st.Page`는 **한 페이지의 정보**를 담는 객체입니다.
- `page`: 페이지 소스 (Python 파일 경로나 함수)
- `title`: 페이지 제목
- `icon`: 페이지 옆에 붙일 이모지나 아이콘
- `url_path`: 주소 표시줄(URL)에서 보이는 경로 (보통 자동으로 만들어져서 신경 안 써도 됨)
- `default`: 기본 페이지 설정 (True로 하면 앱을 처음 켰을 때 이 페이지가 보여짐)
```python
import streamlit as st
# home.py 파일을 페이지로 등록하고, 제목과 아이콘을 지정
st.Page(
page="home.py",
title="홈 화면",
icon="🏠",
default=True
)
```
st.navigation으로 여러 페이지 연결하기 `st.navigation`은 여러 `st.Page`를 리스트(목록)로 받아, **사이드바 메뉴**(또는 상단 메뉴)를 자동으로 만들어줍니다.
1. 페이지들을 등록한 리스트를 만들고,
2. `selected_page = st.navigation(리스트)`로 호출하면,
3. 사용자가 선택한 페이지(`selected_page`)가 반환됩니다.
4. 마지막으로 `selected_page.run()`을 실행하면 해당 페이지가 표시됩니다.
```python
import streamlit as st
# 1) 페이지 목록 만들기
pages = [
st.Page("home.py", title="홈", icon="🏠", default=True),
st.Page("production.py", title="생산 데이터", icon="🏭"),
st.Page("quality.py", title="품질 관리", icon="🔍"),
st.Page("maintenance.py", title="예지 보전", icon="🛠️"),
]
selected_page = st.navigation(pages)
selected_page.run()
```