筆者:飯尾 淳
本連載では「Pythonを昔から使っているものの、それほど使いこなしてはいない」という筆者が、いろいろな日常業務をPythonで処理することで、立派な「蛇使い」に育つことを目指します。その過程を温かく見守ってください。皆さんと共に勉強していきましょう。第20回では、データの可視化などにも活用できるWebアプリケーションフレームワーク「Streamlit」の、より進んだ使い方を紹介します。
シェルスクリプトマガジン Vol.90は以下のリンク先でご購入できます。![]()
![]()
図4 プルダウンメニューでサブページに移動できるようにしたコード
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」ファイルに記述するコード
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」ファイルに記述するコード
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」ファイルに記述するコード
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')