본문 바로가기
Python

[Python] [Streamlit 사용법] 3. button

by bryan.oh 2022. 2. 22.
반응형

Streamlit
Button

 

기본적인 사용법

import streamlit as st

st.title("Streamlit Test")

input_user_name = st.text_input(label="User Name", value="default value")

if st.button("Confirm"):
    con = st.container()
    con.caption("Result")
    con.write(f"Hello~ {str(input_user_name)}")

 

st.button() 은 True, False 를 리턴합니다.

btn_clicked = st.button("Confirm")
st.write(btn_clicked)

클릭하기 전(페이지 로딩)에는 False 를 찍고, 버튼을 클릭하면 True 를 찍습니다.

 

버튼 Disable 

동의하기 등의 체크박스에 체크를 했을 경우 버튼을 누를 수 있도록 하는 방법입니다.

import streamlit as st

st.title("Streamlit Test")
input_user_name = st.text_input(label="User Name", value="")

checkbox = st.checkbox('agree')
btn_clicked = st.button("Confirm", key='confirm_btn', disabled=(checkbox is False))

if btn_clicked:
    con = st.container()
    con.caption("Result")
    con.write(f"Hello~ {str(input_user_name)}")

 

입력된 텍스트 체크

if btn_clicked:
    con = st.container()
    con.caption("Result")
    if not str(input_user_name):
        con.error("Input your name please~")
    else:
        con.write(f"Hello~ {str(input_user_name)}")

 

on_click

on_click 으로도 위와 같은 기능을 구현할 수 있습니다.

import streamlit as st


def on_button_click():
    st.session_state.error_message = ''
    st.session_state.result_message = ''
    if not str(st.session_state.user_name):
        st.session_state.error_message = "Input your name please~"
    else:
        st.session_state.result_message = f"Hello~ {str(st.session_state.user_name)}"


st.title("Streamlit Test")

input_user_name = st.text_input(label="User Name", key='user_name', value="")


checkbox = st.checkbox('agree')
st.button("Confirm", key='confirm_btn', disabled=(checkbox is False), on_click=on_button_click)

con = st.container()
con.caption("Result")
if 'error_message' in st.session_state and st.session_state.error_message:
    con.error(st.session_state.error_message)
if 'result_message' in st.session_state and st.session_state.result_message:
    con.write(st.session_state.result_message)

 

 

session_state 를 사용했는데요.

요건 다음 포스트에서 간단히 설명 하겠습니다.

728x90
반응형

댓글