Streamlit 멀티 select 사용하기
Streamlit 멀티 select 사용하기
Streamlit
Streamlit 멀티 select 사용하기
Streamlit의 st.multiselect
는 여러 선택 항목 중에서 사용자가 다중 항목을 선택할 수 있도록 해주는 위젯입니다. 이를 활용하면 인터랙티브한 대시보드나 웹 애플리케이션에서 필터링 기능을 쉽게 구현할 수 있습니다. 아래에서는 st.multiselect
의 기본적인 사용법을 설명하고, 간단한 예제 코드를 제공합니다.
st.multiselect
란?
st.multiselect
는 여러 옵션 중에서 하나 이상의 항목을 선택할 수 있는 위젯입니다. 사용자가 선택한 항목들은 리스트 형태로 반환되며, 이를 바탕으로 데이터를 필터링하거나 특정 동작을 수행할 수 있습니다.
함수 정의
st.multiselect(str, # 위젯에 표시될 라벨
label: # 선택할 수 있는 항목들의 리스트
options: Sequence[Any], None] = None, # 초기 선택값
default: Union[Sequence[Any], str] = str, # 항목을 표시하는 방법
format_func: Callable[[Any], str] = None, # 고유 키값
key: Optional[help: Optional[str] = None, # 위젯에 표시할 도움말
None]] = None, # 선택이 바뀔 때 호출되는 콜백 함수
on_change: Optional[Callable[[], = None, # 콜백 함수에 전달할 추가 인자
args: Optional[Tuple[Any, ...]] str, Any]] = None, # 콜백 함수에 전달할 추가 키워드 인자
kwargs: Optional[Dict[int] = None, # 선택 가능한 최대 항목 수
max_selections: Optional[bool = False, # 위젯 비활성화 여부
disabled: str = "visible" # 라벨 가시성 ('visible', 'hidden', 'collapsed')
label_visibility: )
주요 파라미터 설명
- label: 위젯 상단에 표시되는 텍스트입니다.
- options: 사용자가 선택할 수 있는 항목들의 리스트입니다. 텍스트, 숫자, 객체 등 다양한 유형이 가능합니다.
- default: 기본으로 선택된 항목을 지정할 수 있습니다. 선택하지 않으면 아무 항목도 선택되지 않은 상태로 위젯이 생성됩니다.
- format_func: 옵션을 표시할 때, 기본적으로
str()
함수를 사용하지만, 이를 다른 형식으로 변경하고 싶다면format_func
을 설정할 수 있습니다. - max_selections: 선택 가능한 항목의 최대 개수를 제한할 수 있습니다.
- disabled:
True
로 설정하면 위젯이 비활성화되어 선택할 수 없게 됩니다.
기본 사용 예시
import streamlit as st
# 선택 가능한 옵션 목록
= ['Python', 'Java', 'C++', 'JavaScript', 'Go']
options
# 다중 선택 위젯
= st.multiselect(
selected_options '프로그래밍 언어를 선택하세요', # 라벨
# 옵션 리스트
options, =['Python'], # 기본 선택값
default
)
# 선택한 항목 출력
'선택한 언어:', selected_options) st.write(
결과
- 기본으로 ’Python’이 선택된 상태로 위젯이 표시됩니다.
- 사용자는 위젯에서 여러 언어를 선택할 수 있으며, 선택한 결과는
selected_options
변수에 리스트 형태로 저장됩니다. st.write()
함수는 사용자가 선택한 항목을 화면에 출력합니다.
format_func
예제
때로는 옵션을 더 읽기 쉽게 표시하고 싶을 때가 있습니다. 이때 format_func
를 사용하여 선택 항목의 표시 형식을 지정할 수 있습니다.
import streamlit as st
# 선택 가능한 옵션 목록 (언어 코드를 포함)
= {'Python': '파이썬', 'Java': '자바', 'C++': '씨 플러스 플러스', 'JavaScript': '자바스크립트'}
options
# 다중 선택 위젯
= st.multiselect(
selected_options '프로그래밍 언어를 선택하세요',
# 키 값 (영문)
options.keys(), =lambda x: options[x] # 한글로 표시되게 변환
format_func
)
# 선택한 항목 출력
'선택한 언어:', [options[lang] for lang in selected_options]) st.write(
결과
- 사용자는 영어 키를 선택하지만, UI에는 한글로 표시됩니다. 이처럼
format_func
을 사용하여 선택 항목의 표현 방식을 사용자 정의할 수 있습니다.
max_selections
사용 예제
최대 선택 가능한 항목의 개수를 제한할 수 있습니다. 아래 예시에서는 최대 2개까지만 선택할 수 있습니다.
import streamlit as st
# 선택 가능한 옵션 목록
= ['Python', 'Java', 'C++', 'JavaScript', 'Go']
options
# 다중 선택 위젯 (최대 2개 선택 가능)
= st.multiselect(
selected_options '프로그래밍 언어를 선택하세요',
options,=2 # 최대 2개까지 선택 가능
max_selections
)
# 선택한 항목 출력
'선택한 언어:', selected_options) st.write(
결과
- 사용자는 2개까지만 언어를 선택할 수 있습니다. 2개를 선택하면 나머지 옵션은 비활성화됩니다.
결론
Streamlit의 st.multiselect
는 사용자가 여러 항목을 선택할 수 있도록 돕는 강력한 위젯입니다. 다양한 설정을 통해 기본적인 다중 선택 기능 외에도 표시 형식, 기본값, 선택 개수 제한 등을 쉽게 설정할 수 있습니다.