Layout - 2

루까까·2024년 11월 15일

Streamlit

목록 보기
6/8
post-thumbnail

계속해서 layout에 대해서 알아보자.

st.empty

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

st.expander(label, expanded=False, *, icon=None)

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

label

  • expander겉에 표현되는 이름이다.

expanded

  • 최초로 표현될 때, expander가 기본적으로 펼쳐져있을지 없을지 선택하는 요소이다.

icon

  • expander에 icon을 추가할 수 있는 기능이다.

st.popover

st.popover(label, *, help=None, icon=None, disabled=False, use_container_width=False)

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

help

  • 해당 popover가 무엇을 의미하는지 알려주는 기능이다.
  • 해당 부분에 기입을하고 popover를 클릭하면 위에 본인이 지정한 문구가 나오게 된다.

disabled

  • true값이면 Popover기능을 지원하지 않게된다.

use_container_width

  • popover 크기를 column과 같은 부모 컨테이너 크기에 맞춘다.

st.sidebar

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 Notation

with문으로 사용해야한다는 의미이다.

st.tabs

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창을 선택했는지 알 방벙이 없다...

profile
기타치는 개발자

0개의 댓글