forked from streamlit/30days
-
Notifications
You must be signed in to change notification settings - Fork 1
/
streamlit_app.py
82 lines (65 loc) · 2.73 KB
/
streamlit_app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import glob
import os
import urllib.request
import numpy as np
import pandas as pd
import streamlit as st
from PIL import Image
def update_params():
st.experimental_set_query_params(challenge=st.session_state.day)
md_files = sorted(
[int(x.strip("Day").strip(".md")) for x in glob.glob1("content", "*.md")]
)
# Logo and Navigation
col1, col2, col3 = st.columns((1, 4, 1))
with col2:
st.image(Image.open("streamlit-logo-secondary-colormark-darktext.png"))
st.markdown("# 30 Days Of Streamlit(繁體中文版)")
days_list = [f"Day {x}" for x in md_files]
query_params = st.experimental_get_query_params()
try:
if query_params and query_params["challenge"][0] in days_list:
st.session_state.day = query_params["challenge"][0]
except KeyError:
st.session_state.day = days_list[0]
st.write('中文翻譯進度:5 / 30(2023/04/11 更新)')
selected_day = st.selectbox(
'開始挑戰 👇', days_list, key='day', on_change=update_params
)
with st.expander('有關 #30DaysOfStreamlit'):
st.markdown('''
**#30DaysOfStreamlit** 是一個程式語言挑戰,設計用來幫助你開始建立 Streamlit 應用程式。
這 30 天內你能夠學會這些:
- 設定一個 coding 環境來建立 Streamlit 應用程式
- 建立你第一個 Streamlit 應用程式
- 學習有關所有優秀的 輸入/輸出 部件來用在你的 Streamlit 應用程式
''')
# Sidebar
st.sidebar.header('關於')
st.sidebar.markdown(
'[Streamlit](https://streamlit.io) 是一個 Python 的函式庫,允許使用 Python 建立 可互動、資料驅動 的 web 應用程式。'
)
st.sidebar.header('資源')
st.sidebar.markdown('''
- [Streamlit 文件](https://docs.streamlit.io/)
- [Cheat Sheet](https://docs.streamlit.io/library/cheatsheet)
- [Book](https://www.amazon.com/dp/180056550X)(開始 Streamlit for 資料科學)
- [Blog](https://blog.streamlit.io/how-to-master-streamlit-for-data-science/)(如何精通 Streamlit for 資料科學)
''')
st.sidebar.header('部署')
st.sidebar.markdown(
'只需要點幾下,你可以透過 [Streamlit Community Cloud](https://streamlit.io/cloud) 快速地部署 Streamlit 應用程式')
# Display content
for i in days_list:
if selected_day == i:
st.markdown(f"# 🗓️ {i}")
j = i.replace(" ", "")
with open(f"content/{j}.md", "r") as f:
st.markdown(f.read())
if os.path.isfile(f'content/figures/{j}.csv') == True:
st.markdown('---')
st.markdown('### 圖表(Figures)')
df = pd.read_csv(f'content/figures/{j}.csv', engine='python')
for i in range(len(df)):
st.image(f"content/images/{df.img[i]}")
st.info(f"{df.figure[i]}: {df.caption[i]}")