계속해서 layout에 대해서 알아보자.
layout을 하는데 도움을 주는 기능이다.
보이지 않는 빈컨테이너를 만들어준다고 생각하면 된다.
st.empty()
사용하는 방법으로는
with st.empty():
st.markdown("Hello")
or
placeholder = st.empty()
placeholder.markdown("Hello")
등이 있다.
st.empty는 빈 컨테이너를 생성하며, 이 컨테이너에 텍스트, 위젯 등을 자유롭게 추가할 수 있습니다. 필요에 따라 빈 공간을 임시로 확보하거나, 특정 요소를 동적으로 업데이트할 때 유용하다.
대표적으로
import streamlit as st
import time
with st.empty():
for seconds in range(10):
st.write(f"⏳ {seconds} seconds have passed")
time.sleep(1)
st.write(":material/check: 10 seconds over!")
st.button("Rerun")
과 같이 text를 갑자기 보여주는 기능을 만들수도 있다.
st.expander(label, expanded=False, *, icon=None)

expander창을 만들어주는 기능이다.
st.popover(label, *, help=None, icon=None, disabled=False, use_container_width=False)

popover 창을 만들어주는 기능이다.

import streamlit as st
with st.sidebar:
st.write('test')

해당 함수를 사용하면 좌측에 사이드바 ui를 표시한다
위 코드 아래에 text나 widget을 넣게 되면 사이드바에 표시된다
import streamlit as st
with st.sidebar:
st.write('test')
st.button('test')

st.echo, st.spinner, st.toast는 sidebar에서 사용 시,
Object Notation사용이 불가능하다. 오직 with Notation만 사용가능하다.
즉,st.write('test') <- Object Notation with st.spinner("Loading..."): time.sleep(2) st.success("Done!") <-with Notationwith문으로 사용해야한다는 의미이다.
st.tabs(tabs: List[str])

tab창을 지원하는 기능이다.
import streamlit as st
tab1, tab2, tab3 = st.tabs(["test1", "test2", "test3"])
with tab1:
st.write('test1')
with tab2:
st.write('test2')
with tab3:
st.write('test3')
colums와 다르게 비율조절이 되지않는다.
추가적으로 tab의 경우 모두 하나의 화면안에 표시되기에 다른 tab창에서 오류가 생기면 모든 tab창이 오류화면으로 보이게 된다.
예를들어 tab3에 오류를 발생해보면import streamlit as st tab1, tab2, tab3 = st.tabs(["test1", "test2", "test3"]) with tab1: st.write('test1') with tab2: st.write('test2') with tab3: raise Exception("이것은 강제로 발생시킨 오류입니다.")
tab3에서 오류가 발생하였지만 tab1에서도 오류가 보이는걸 확인할 수 있다.
기본적으로 streamlit에서 어느 user가 어떤 tab창을 선택했는지 알 방벙이 없다...