기술과 산업/AI

Streamlit 실전 마스터 시리즈 3화 – 다양한 사용자 입력 받기

B컷개발자 2025. 5. 14. 20:13
728x90

 

Streamlit 앱에서 슬라이더, 날짜 선택, 체크박스, 라디오 버튼 등 다양한 사용자 입력 컴포넌트를 사용하는 방법과 실습 예제를 알아봅니다.

 

Streamlit의 진짜 매력 = 인터랙션

 

Streamlit이 단순한 데이터 시각화 도구를 넘어 진짜 웹 앱 프레임워크로 불리는 이유는 바로 사용자와의 인터랙션입니다.

이번 회차에서는 Streamlit이 제공하는 다양한 **사용자 입력 위젯(Widgets)**을 통해 앱에 사용자 참여 기능을 추가하는 방법을 배워봅니다.

 


 

대표적인 사용자 입력 컴포넌트

 

Streamlit은 단 한 줄 코드로 여러 형태의 사용자 입력 UI를 추가할 수 있습니다.

 


 

1. 슬라이더 (Slider)

 

범위 내 숫자 값을 쉽게 입력 받을 때 사용합니다.

import streamlit as st

value = st.slider('원하는 값을 선택하세요', 0, 100, 50)
st.write(f'선택한 값: {value}')

활용 예:

가격, 연령대, 점수 설정

 


 

2. 날짜 선택 (Date Input)

 

날짜 데이터를 입력 받을 때 유용합니다.

date = st.date_input('날짜를 선택하세요')
st.write(f'선택한 날짜: {date}')

활용 예:

예약 시스템, 기간 설정, 보고서 생성 기준일 설정

 


 

3. 체크박스 (Checkbox)

 

단순한 Yes/No 선택 기능입니다.

agree = st.checkbox('약관에 동의합니다')

if agree:
    st.write('동의하셨습니다.')

활용 예:

옵션 활성화, 기능 켜기/끄기

 


 

4. 라디오 버튼 (Radio Button)

 

복수 선택 중 하나만 선택해야 할 경우 사용합니다.

color = st.radio(
    "좋아하는 색깔은?",
    ('빨강', '초록', '파랑'))

st.write(f'당신이 고른 색은 {color}입니다.')

활용 예:

설문조사, 제품 옵션 선택

 


 

5. 다중 선택 박스 (Multiselect)

 

여러 개의 항목을 한꺼번에 선택할 수 있습니다.

options = st.multiselect(
    '좋아하는 과일을 모두 선택하세요',
    ['사과', '바나나', '오렌지', '포도'],
    ['사과', '포도'])

st.write(f'선택한 과일: {options}')

활용 예:

태그 선택, 취미 리스트, 카테고리 필터

 


 

6. 파일 업로드 (File Uploader)

 

사용자가 파일을 업로드하도록 만들 수 있습니다.

uploaded_file = st.file_uploader("파일을 업로드하세요")

if uploaded_file is not None:
    st.write("파일 업로드 완료:", uploaded_file.name)

활용 예:

CSV 데이터, 이미지, 엑셀 파일 입력용

 


 

7. 비밀번호 입력 (Text Input with Type Password)

 

보안 입력이 필요한 경우 사용합니다.

password = st.text_input("비밀번호 입력", type="password")
st.write(f"입력한 비밀번호 길이: {len(password)} 자")

활용 예:

로그인 폼, API Key 입력

 


 

실전 예제 – 맞춤형 설문 폼 만들기

 

아래 코드는 지금까지 배운 컴포넌트를 종합한 미니 설문 폼 예제입니다.

import streamlit as st

st.title("사용자 정보 설문")

name = st.text_input("이름을 입력하세요")
age = st.slider("나이", 0, 100, 25)
hobbies = st.multiselect("취미를 선택하세요", ["독서", "운동", "영화", "게임", "음악"])
subscribe = st.checkbox("뉴스레터 구독 신청")

if st.button("제출"):
    st.subheader("설문 결과")
    st.write(f"이름: {name}")
    st.write(f"나이: {age}세")
    st.write(f"취미: {hobbies}")
    st.write("구독 여부: 신청" if subscribe else "구독 여부: 미신청")

활용 예:

고객 설문조사, 고객 피드백 수집, 이벤트 참여 폼

 


 

실무에서 이렇게 활용하세요

 

이러한 입력 컴포넌트들은 다양한 내부 툴, AI 서비스, 데이터 입력 앱에 적용할 수 있습니다.

 

예를 들어

 

  • 고객 진단 테스트
  • 직원 만족도 조사
  • 주문/예약 데이터 입력 인터페이스
  • 사내 업무 요청 자동화 양식

 

등에 즉시 적용이 가능합니다.

 


 

마무리

 

Streamlit은 프론트엔드 기술 없이도 강력한 사용자 입력 기반 앱을 쉽게 만들 수 있습니다.

앞으로 다양한 컴포넌트 조합을 통해 더욱 풍부한 사용자 경험을 구현해 보겠습니다.

 


 

다음 회차 예고

 

👉 Streamlit 실전 마스터 시리즈 4화 – 표와 그래프 다루기

Pandas DataFrame과 다양한 차트 라이브러리를 이용해 데이터를 시각화하는 방법을 배웁니다.

728x90