シェルスクリプトマガジン

Pythonあれこれ

筆者:飯尾 淳

本連載では「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')