筆者:飯尾 淳
本連載では「Pythonを昔から使っているものの、それほど使いこなしてはいない」という筆者が、いろいろな日常業務をPythonで処理することで、立派な「蛇使い」に育つことを目指します。その過程を温かく見守ってください。皆さんと共に勉強していきましょう。第20回では、データの可視化などにも活用できるWebアプリケーションフレームワーク「Streamlit」の、より進んだ使い方を紹介します。
シェルスクリプトマガジン Vol.90は以下のリンク先でご購入できます。
図4 プルダウンメニューでサブページに移動できるようにしたコード
1 2 3 4 5 6 7 8 9 |
import streamlit as st selected = st.selectbox('なに食べる?', ('-', 'ramen', 'curry', 'katsudon')) pages = {'ramen': 'pages/1_🍜_ramen.py', 'curry': 'pages/2_🍛_curry.py', 'katsudon': 'pages/3_🍚_katsudon.py' } if selected in pages.keys(): st.switch_page(pages[selected]) |
図8 「1_edit.py」ファイルに記述するコード
1 2 3 4 5 6 7 8 9 10 |
import streamlit as st import pandas as pd df = pd.read_excel('TODO.xlsx') df = st.data_editor(df) clicked = st.button('保存', type='primary', on_click=lambda:\ df.to_excel('TODO.xlsx', index=False)) if (clicked): st.switch_page('index.py') |
図11 「2_new.py」ファイルに記述するコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import streamlit as st import pandas as pd df = pd.read_excel('TODO.xlsx') title = st.text_input(label='タイトル') memo = st.text_area(label='内容') date = st.date_input(label='締切') done = False def append(): global df df_new = pd.DataFrame({'タイトル': [title], '内容': [memo], '締切': [date], '実施': [done]}) df = pd.concat([df, df_new]) df.to_excel('TODO.xlsx', index=False) clicked = st.button('登録', type='primary', on_click=append) if (clicked): st.switch_page('index.py') |
図11 「2_new.py」ファイルに記述するコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import streamlit as st import pandas as pd df = pd.read_excel('TODO.xlsx') title = st.text_input(label='タイトル') memo = st.text_area(label='内容') date = st.date_input(label='締切') done = False def append(): global df df_new = pd.DataFrame({'タイトル': [title], '内容': [memo], '締切': [date], '実施': [done]}) df = pd.concat([df, df_new]) df.to_excel('TODO.xlsx', index=False) clicked = st.button('登録', type='primary', on_click=append) if (clicked): st.switch_page('index.py') |