Streamlit 멀티 select 사용하기

Streamlit 멀티 select 사용하기

Streamlit
Streamlit 멀티 select 사용하기
Author

gabriel yang

Published

September 21, 2024


Streamlit의 st.multiselect는 여러 선택 항목 중에서 사용자가 다중 항목을 선택할 수 있도록 해주는 위젯입니다. 이를 활용하면 인터랙티브한 대시보드나 웹 애플리케이션에서 필터링 기능을 쉽게 구현할 수 있습니다. 아래에서는 st.multiselect의 기본적인 사용법을 설명하고, 간단한 예제 코드를 제공합니다.

st.multiselect란?

st.multiselect는 여러 옵션 중에서 하나 이상의 항목을 선택할 수 있는 위젯입니다. 사용자가 선택한 항목들은 리스트 형태로 반환되며, 이를 바탕으로 데이터를 필터링하거나 특정 동작을 수행할 수 있습니다.

함수 정의

st.multiselect(
    label: str,  # 위젯에 표시될 라벨
    options: Sequence[Any],  # 선택할 수 있는 항목들의 리스트
    default: Union[Sequence[Any], None] = None,  # 초기 선택값
    format_func: Callable[[Any], str] = str,  # 항목을 표시하는 방법
    key: Optional[str] = None,  # 고유 키값
    help: Optional[str] = None,  # 위젯에 표시할 도움말
    on_change: Optional[Callable[[], None]] = None,  # 선택이 바뀔 때 호출되는 콜백 함수
    args: Optional[Tuple[Any, ...]] = None,  # 콜백 함수에 전달할 추가 인자
    kwargs: Optional[Dict[str, Any]] = None,  # 콜백 함수에 전달할 추가 키워드 인자
    max_selections: Optional[int] = None,  # 선택 가능한 최대 항목 수
    disabled: bool = False,  # 위젯 비활성화 여부
    label_visibility: str = "visible"  # 라벨 가시성 ('visible', 'hidden', 'collapsed')
)

주요 파라미터 설명

  • label: 위젯 상단에 표시되는 텍스트입니다.
  • options: 사용자가 선택할 수 있는 항목들의 리스트입니다. 텍스트, 숫자, 객체 등 다양한 유형이 가능합니다.
  • default: 기본으로 선택된 항목을 지정할 수 있습니다. 선택하지 않으면 아무 항목도 선택되지 않은 상태로 위젯이 생성됩니다.
  • format_func: 옵션을 표시할 때, 기본적으로 str() 함수를 사용하지만, 이를 다른 형식으로 변경하고 싶다면 format_func을 설정할 수 있습니다.
  • max_selections: 선택 가능한 항목의 최대 개수를 제한할 수 있습니다.
  • disabled: True로 설정하면 위젯이 비활성화되어 선택할 수 없게 됩니다.

기본 사용 예시

import streamlit as st

# 선택 가능한 옵션 목록
options = ['Python', 'Java', 'C++', 'JavaScript', 'Go']

# 다중 선택 위젯
selected_options = st.multiselect(
    '프로그래밍 언어를 선택하세요',  # 라벨
    options,  # 옵션 리스트
    default=['Python'],  # 기본 선택값
)

# 선택한 항목 출력
st.write('선택한 언어:', selected_options)

결과

  • 기본으로 ’Python’이 선택된 상태로 위젯이 표시됩니다.
  • 사용자는 위젯에서 여러 언어를 선택할 수 있으며, 선택한 결과는 selected_options 변수에 리스트 형태로 저장됩니다.
  • st.write() 함수는 사용자가 선택한 항목을 화면에 출력합니다.

format_func 예제

때로는 옵션을 더 읽기 쉽게 표시하고 싶을 때가 있습니다. 이때 format_func를 사용하여 선택 항목의 표시 형식을 지정할 수 있습니다.

import streamlit as st

# 선택 가능한 옵션 목록 (언어 코드를 포함)
options = {'Python': '파이썬', 'Java': '자바', 'C++': '씨 플러스 플러스', 'JavaScript': '자바스크립트'}

# 다중 선택 위젯
selected_options = st.multiselect(
    '프로그래밍 언어를 선택하세요',
    options.keys(),  # 키 값 (영문)
    format_func=lambda x: options[x]  # 한글로 표시되게 변환
)

# 선택한 항목 출력
st.write('선택한 언어:', [options[lang] for lang in selected_options])

결과

  • 사용자는 영어 키를 선택하지만, UI에는 한글로 표시됩니다. 이처럼 format_func을 사용하여 선택 항목의 표현 방식을 사용자 정의할 수 있습니다.

max_selections 사용 예제

최대 선택 가능한 항목의 개수를 제한할 수 있습니다. 아래 예시에서는 최대 2개까지만 선택할 수 있습니다.

import streamlit as st

# 선택 가능한 옵션 목록
options = ['Python', 'Java', 'C++', 'JavaScript', 'Go']

# 다중 선택 위젯 (최대 2개 선택 가능)
selected_options = st.multiselect(
    '프로그래밍 언어를 선택하세요',
    options,
    max_selections=2  # 최대 2개까지 선택 가능
)

# 선택한 항목 출력
st.write('선택한 언어:', selected_options)

결과

  • 사용자는 2개까지만 언어를 선택할 수 있습니다. 2개를 선택하면 나머지 옵션은 비활성화됩니다.

결론

Streamlit의 st.multiselect는 사용자가 여러 항목을 선택할 수 있도록 돕는 강력한 위젯입니다. 다양한 설정을 통해 기본적인 다중 선택 기능 외에도 표시 형식, 기본값, 선택 개수 제한 등을 쉽게 설정할 수 있습니다.

<h3>카테고리 다른 글</h3>
Date Title Author
Jan 1, 3000 전체 카테고리 gabriel yang
Sep 21, 2024 Streamlit selectbox를 사용하기 gabriel yang
Sep 19, 2024 Streamlit fragments 사용하기 gabriel yang
Sep 19, 2024 Streamlit form 사용하기 gabriel yang
Sep 19, 2024 Streamlit 데이터프레임 수정하기 gabriel yang
Sep 19, 2024 Streamlit fragments 사용하기 gabriel yang
Sep 18, 2024 Streamlit docker로 배포하기 gabriel yang
Sep 18, 2024 Streamlit 실시간 업데이트 사용하기 gabriel yang
Sep 18, 2024 Streamlit에서 다이얼로그 사용하기 gabriel yang
Sep 18, 2024 Streamlit의 유지보수와 디버깅 팁 gabriel yang
Sep 17, 2024 Streamlit cache_resource 사용하기 gabriel yang
Sep 16, 2024 Streamlit cache 사용하기 gabriel yang
Sep 15, 2024 Streamlit 데이터프레임 선택하기 gabriel yang
Sep 14, 2024 Streamlit 다중 page 구성하기 gabriel yang
Sep 13, 2024 Streamlit Session_state 사용하기 gabriel yang
Sep 12, 2024 Streamlit을 활용한 기본 시각화 도구 gabriel yang
Sep 12, 2024 Streamlit에 Plotly 차트 적용하기 gabriel yang
Sep 11, 2024 Streamlit에서 파일 업로드하기 gabriel yang
Sep 11, 2024 Streamlit에 SQLite 데이터베이스 적용 gabriel yang
Sep 10, 2024 Streamlit UI 컴포넌트 소개 gabriel yang
Sep 9, 2024 Streamlit 사용 사례 gabriel yang
Sep 9, 2024 Streamlit 설치 및 환경설정 gabriel yang
Sep 9, 2024 Streamlit 애플리케이션 구조 이해 gabriel yang
Sep 9, 2024 Streamlit layout 설정하는 방법 gabriel yang
Sep 8, 2024 Streamlit이란 무엇인가요? gabriel yang
Sep 6, 2024 Streamlit Cloud로 앱 배포하기 gabriel yang
No matching items
Back to BLOG LIST