统一使用start.sh启动

两个demo页面
This commit is contained in:
leo
2023-12-31 17:57:17 +08:00
parent e3dabed229
commit c3b1983b30
8 changed files with 94 additions and 64 deletions

61
main.py
View File

@@ -5,9 +5,30 @@ from loguru import logger
from app.core import settings
pages = os.listdir(os.path.join(settings.BASE_DIR, 'pages'))
pages = [{
'filename': page,
'filepath': os.path.join(settings.BASE_DIR, 'pages', page)
} for page in pages if page.endswith('.py') and page != '__init__.py']
pages.sort(key=lambda x: x['filename'])
def select_file():
...
st.set_page_config(
page_title="Leo's Cool App",
page_icon="🧊",
layout="wide",
initial_sidebar_state="expanded",
)
def open_selected_file():
with open(st.session_state.page_file['filepath'], 'r', encoding='utf-8') as f:
st.session_state.file_content = f.read().strip()
st.session_state.file_lines = st.session_state.file_content.splitlines()
def save_file_content():
with open(st.session_state.page_file['filepath'], 'w', encoding='utf-8') as f:
f.write(st.session_state.file_content)
def new_file():
@@ -31,21 +52,35 @@ st.write('Hello World!')
with st.sidebar:
pages = os.listdir(os.path.join(settings.BASE_DIR, 'pages'))
pages = [{
'filename': page,
'filepath': os.path.join(settings.BASE_DIR, 'pages', page)
} for page in pages if page.endswith('.py') and page != '__init__.py']
option = st.selectbox(
'How would you like to be contacted?',
st.selectbox(
'选择要配置的文件',
pages,
index=0,
format_func=lambda x: x['filename'],
on_change=select_file,
on_change=open_selected_file,
key='page_file'
)
st.write('You selected:', st.session_state.page_file)
st.divider()
st.text_input('新建文件', on_change=new_file, key='new_file')
st.write('You selected:', option)
if 'file_content' not in st.session_state:
open_selected_file()
st.text_input('新建文件', on_change=new_file, key='new_file')
st.write(f'# 当前文件: `{st.session_state.page_file["filename"]}`')
col1, col2 = st.columns(2)
with col1:
st.write('### 代码高亮展示')
st.code(st.session_state.file_content, line_numbers=True)
with col2:
st.write('### 内容编辑区')
st.text_area(
key='file_content',
label_visibility='collapsed',
label='Text to analyze',
on_change=save_file_content,
value=st.session_state.file_content,
height=50 + 22 * len(st.session_state.file_lines),
)