import streamlit as st # 페이지 설정 st.set_page_config(page_title="ViDraft", layout="wide") # 세션 상태 초기화 if 'selected_menu' not in st.session_state or 'selected_sub_menu' not in st.session_state: st.session_state['selected_menu'] = 'Home' st.session_state['selected_sub_menu'] = None # 'Home' 버튼 클릭 시 세션 상태를 'Home'으로 설정하는 함수 def set_home(): st.session_state['selected_menu'] = 'Home' st.session_state['selected_sub_menu'] = None # 사이드바 타이틀 설정 및 'Home' 버튼 추가 st.sidebar.title("ViDraft") st.sidebar.button('Home', on_click=set_home) # 메뉴 항목과 하위 항목 정의 menus = { "Free Stock": ["Template Video", "Template Image", "Search Video", "Search Image"], "Image": ["Generation", "Face ID", "Inpainting", "Remove Background", "Studio"], "Video": ["Generation", "Talking Face", "Remove Background", "Studio"], "Sound": ["Video SFX", "Video Music", "TTS(Voice)", "Voice Clone", "Image SFX", "Image Music"], "Scripts": ["Script"] } # 각 메뉴별 하부 메뉴를 펼침 for menu_name, sub_menus in menus.items(): if menu_name != 'Home': # 'Home'은 하위 메뉴가 없으므로 제외 with st.sidebar.expander(menu_name): # 하부 메뉴를 선택할 수 있는 selectbox 생성 selected = st.selectbox(f"Select {menu_name} option", [""] + sub_menus, key=menu_name, on_change=set_home) if selected: st.session_state['selected_menu'] = menu_name st.session_state['selected_sub_menu'] = selected # 선택된 메뉴와 하부 메뉴에 따른 내용 표시 if st.session_state['selected_menu'] == 'Home': st.title("Welcome to ViDraft") st.write("This is the Home page. Select an option from the sidebar to get started.") else: st.subheader(f"{st.session_state['selected_menu']} > {st.session_state['selected_sub_menu']}") # 여기에 선택된 메뉴에 따른 콘텐츠 표시 로직 추가 # 비디오 파일 경로 설정 video_files = ["ex1.mp4", "ex2.mp4", "ex3.mp4", "ex4.mp4", "ex5.mp4", "ex6.mp4", "ex7.mp4","ex8.mp4", "ex9.mp4", "ex10.mp4", "ex11.mp4", "ex12.mp4", "ex13.mp4", "ex14.mp4","ex15.mp4", "ex16.mp4", "ex17.mp4", "ex18.mp4"] # 갤러리 형태로 비디오 표시 cols = st.columns(2) # 2개의 열로 넓게 배치 for index, video_file in enumerate(video_files): with cols[index % 2]: st.video(video_file)