본문 바로가기
Streamlit

[Streamlit] 반응형 입력도구, 멀티미디어 삽입, 입력 받기: button, radio, checkbox, selectbox, multiselect, slider, expander, image, video, audio, text_input, number_input, date_input, time_input, color_picker

by eyoo 2022. 5. 19.

Streamlit에서 만들수있는 사용자들을 위한 반응형 입력도구들을 알아보자

 

button 함수로 버튼을 만들수 있다.

 

in:

if st.button('데이터 보기'):
    st.dataframe(df)
out:

# button의 함수의 첫번째 파라미터에는 버튼에 적힐 문자가 들어와야 한다.

# 버튼을 누르면 True값이 된다.

# 따라서 버튼을 누르면 데이터 프레임이 나오게 된다.

 

 

radio로 라디오 버튼을 만들어 여러 항목들 중 하나를 선택하게 만들수있다.

 

라디오 버튼을 선택해 데이터프레임이 petal length기준으로 오름차순 혹은 내림차순 정렬될수있도록 하자.

 

in:

my_order = ['오름차순 정렬','내림차순 정렬']
status =  st.radio('정렬방법 선택', my_order)

if status == my_order[0]:
    st.dataframe(df.sort_values('petal_length', inplace= True))
elif status == my_order[1]:
    st.dataframe(df.sort_values('petal_length', ascending=False, inplace= True))
out:

# 먼저 리스트를 만들어서 라디오 버튼의 항목을 설정한다.

# 그 후, 방금 만든 리스트를 radio함수의 두번째 파라미터에 넣는다.

# 첫번째 파라미터는 라디오 버튼의 명칭을 입력한다.

# (거의 모든 반응형 입력도구의 첫 파라미터는 명칭을 입력하는 경우가 많다.)

 

 

checkbox함수로 체크박스를 만들수 있다.

in:
if st.checkbox('헤드 5개 보기'):
    st.dataframe(df.head())
else:
    st.text('헤드를 숨겼습니다.')
out:

 

 

selectbox 함수를 사용하여 여러 요소들중 한개만 고를수있는 박스를 만들수 있다.

 

in:

    langauge = ['Python','C','Java','Go','PHP']
    my_choice = st.selectbox('좋아하는 언어 선택',langauge)

    if my_choice == langauge[0]:
        st.write('파이썬을 선택했습니다.')
    elif my_choice == langauge[1]:
        st.write('C를 선택했습니다.')
    elif my_choice == langauge[2]:
        st.write('자바를 선택했습니다.')

out:

# 라디오 버튼 처럼 리스트를 먼저 만든다.

# 두번째 파라미터에 앞서 만든 리스트를 넣는다.

 

 

multiselect를 사용하여 여러 요소중에서 다수를 선택할수있다.

 

멀티셀렉트를 이용해서 특정 컬럼들만 가져오자

 

in:

column_list = df.columns

choice_list = st.multiselect('컬럼을 고르세요',column_list)
if len(choice_list) != 0:
    st.dataframe(df[choice_list])

out: 

 

 

slider로 슬라이더를 삽입하여 숫자를 저장할수있다.

 

in:

st.slider('나이',0,120, 30, 5)

out:

# 첫번째 파라민터는 슬라이더 명칭이다

# 두번째 파라미터에 최소값을 입력한다.

# 세번째 파라미터에 최대값을 입력한다.

# 네번째 파라미터에 기본값을 입력한다.

# 다섯번째 파라미터에 최소단위를 입력한다.

 

 

expander로 늘리고 줄일수있는 칸을 만들수 있다.

 

in:

with st.expander('Hello'):
    st.text('안녕하세요')
    st.dataframe(df)

out:

 

 

image 함수로 저장된 이미지파일을 화면에 표시할수있다.

 

in:

from PIL import Image
def main():
    img = Image.open('data2/bird.jpg')
    st.image(img,use_column_width=True)

out:

# PIL의 Image 라이브러리를 먼저 임포트 해야한다.

# Image 라이브러리의 open함수로 저장된 이미지를 변수로 저장한다.

# 스트림릿의 image함수에 변수를 넣어 이미지를 보여줄수 있다.

# use_column_width 파라미터를 이용해 이미지를 창에 맞취 늘일수있다.

 

 

URL을 사용하여 이미지를 온라인에서 가져올수도 있다.

 

in:

url = 'data:image/jpeg;base64,/9j/4AA..(중략)..SrpM//Z'
st.image(url,use_column_width=True)

out:

# URL을 직접 사용할때는 PIL의 Image 함수를 쓸필요가 없다.

 

 

video 함수로 동영상을 추가할수있다.

 

in:

video_file = open('data2/secret_of_success.mp4','rb')
st.video(video_file)

out:

 

 

audio 함수로 노래나 음성파일을 나타낼수있다.

 

in:

audio_file = open('data2/song.mp3','rb')
st.audio(audio_file.read() , format = 'audio/mp3')

out:

 

 

 

text_input 함수로 텍스트를 입력받을수있다.

 

in:

address = st.text_input('주소를 입력하세요',max_chars=10)
st.subheader(address)

out:

 

# max_char 파라미터를 설정하여 글자 길이에 제한을 둘수있다.

# height 파라미터로 줄수에 제한을 줄수있다.

 

 

type 파라미터를 통해 비밀번호를 입력받을수도 있다.

 

in:

password = st.text_input('비밀번호 입력',type='password')
st.write(password)
out:

 

 

number_input으로 숫자를 입력 받을수있다.

 

in:

st.number_input('숫자 입력',1,100)

st.number_input('실수 입력',1.0,100.0)

out:

# 첫번째 파라미터에 최소값

# 두번째 파라미터에 최대값을 넣는다.

# 최대값과 최소값에 소수점을 붙이면 실수로 받을수있다.

 

 

date_input으로 날짜를 입력받을수있다.

 

in:

my_date = st.date_input('날짜 입력')
st.write(my_date)

out:

 

 

time_input으로 시간을 입력받을수 있다.

 

in:

my_time = st.time_input('시간 선택')
st.write(my_time)

out:

 

 

color_picker로 유저에게 색상을 입력받을수 있다.

 

in:

color = st.color_picker('색 선택')
st.write(color)

out:

 

 

 

 

 

댓글