import streamlit as st import numpy as np import pandas as pd import time # 사이드바 타이틀 st.sidebar.title("접이식 메뉴") # 메뉴 항목과 하위 항목 정의 menus = { "Display": ["Display text", "Display interactive widgets", "Display data", "Display media", "Display code", "Display progress and status"], "Data": ["Connect to data sources", "Mutate data", "Placeholders, help, and options"], "Control": ["Optimize performance", "Cache global resources", "Deprecated caching"], "Layout": ["Columns", "Tabs", "Control flow"], "Interactivity": ["Build chat-based apps", "Personalize apps for users"], } selected_menu = None # 각 메뉴에 대해 사이드바에 접이식 메뉴 생성 for menu in menus: with st.sidebar.expander(menu): for sub_menu in menus[menu]: if st.button(sub_menu, key=sub_menu): # 고유한 key를 제공하여 각 버튼을 구별 selected_menu = sub_menu break # 선택된 메뉴에 따른 동작 구현 if selected_menu: st.header(f"Selected Menu: {selected_menu}") if selected_menu == "Display text": st.text('Fixed width text') st.markdown('_Markdown_') # see #* st.caption('Balloons. Hundreds of them...') st.latex(r''' e^{i\pi} + 1 = 0 ''') st.write('Most objects') # df, err, func, keras! st.write(['st', 'is <', 3]) # see * st.title('My title') st.header('My header') st.subheader('My sub') st.code('for i in range(8): foo()') elif selected_menu == "Display interactive widgets": # Interactive widgets button_clicked = st.button('Hit me') checkbox_checked = st.checkbox('Check me out') radio_option = st.radio('Pick one:', ['nose', 'ear']) selectbox_option = st.selectbox('Select', [1, 2, 3]) multiselect_options = st.multiselect('Multiselect', [1, 2, 3]) slider_value = st.slider('Slide me', min_value=0, max_value=10) select_slider_option = st.select_slider('Slide to select', options=[1, '2']) text_input = st.text_input('Enter some text') number_input = st.number_input('Enter a number') text_area = st.text_area('Area for textual entry') date_input = st.date_input('Date input') time_input = st.time_input('Time entry') file_uploader = st.file_uploader('File uploader') color_picker = st.color_picker('Pick a color') # 주어진 코드 중 실행되지 않거나 컨텍스트가 누락된 부분은 주석 처리하거나 생략했습니다. # 예를 들어, `data` 변수가 정의되지 않았으므로 `st.audio(data)`, `st.video(data)` 등은 실행할 수 없습니다. # 또한, `st.data_editor`, `st.camera_input` 등은 Streamlit의 현재 버전에서 지원하지 않는 기능입니다. # 'st.experimental_rerun()'과 같은 실험적 기능은 Streamlit의 특정 버전에서만 사용할 수 있습니다. # 각 기능을 사용하기 전에 Streamlit 문서를 참고하여 현재 버전에서 지원하는지 확인하세요. # 기타 기능 구현은 선택된 메뉴에 따라 유사한 패턴으로 추가할 수 있습니다. st.write(slider_val) st.slider('Pick a number', 0, 100, disabled=True) st.dataframe(my_dataframe) st.table(data.iloc[0:10]) st.json({'foo':'bar','fu':'ba'}) st.metric(label="Temp", value="273 K", delta="1.2 K") st.image('./header.png') st.audio(data) st.video(data) col1, col2 = st.columns(2) col1.write('Column 1') col2.write('Column 2') # Three columns with different widths col1, col2, col3 = st.columns([3,1,1]) # col1 is wider # Insert containers separated into tabs: >>> tab1, tab2 = st.tabs(["Tab 1", "Tab2"]) >>> tab1.write("this is tab 1") >>> tab2.write("this is tab 2") # Stop execution immediately: st.stop() # Rerun script immediately: st.experimental_rerun() st.help(pandas.DataFrame) st.get_option(key) st.set_option(key, value) st.set_page_config(layout='wide') st.experimental_show(objects) st.experimental_get_query_params() st.experimental_set_query_params(**params) with st.spinner(text='In progress'): time.sleep(10) st.success('Done') # Show and update progress bar bar = st.progress(50) time.sleep(10) bar.progress(100) st.balloons() st.snow() st.toast('Mr Stay-Puft') st.error('Error message') st.warning('Warning message') st.info('Info message') st.success('Success message') st.exception(e)