使用Streamlit创建多页Web应用


总览

  • 通过Streamlit,可以轻松创建用于查看数据的Web应用程序(参考1,参考2)。
  • 但是,如果一页上排列了很多信息,则很难阅读。
  • 所以我把它做成了一个多页的Web应用程序
  • 所以,我做了→巧克力球查看器

流光

Streamlit是用于创建Web应用程序的Python框架。您无法进行微调,但是构建Web应用程序非常容易。
如果您查看官方文档中的教程,则可以了解一下。

例如,假设您将以下Python文件创建为single_app.py

1
2
3
4
5
6
7
8
9
10
11
12
import streamlit as st

def greeting1():
    st.header('こんにちは, 世界!')
    st.write('ねこはかわいい')

def greeting2():
    st.header('またまたこんにちは, 世界!!')
    st.write('ねこはとてもかわいい')

greeting1()
greeting2()

之后,以下命令将在默认的8063端口上本地启动Web服务器。

1
$ streamlit run single_app.py

这样,所有信息都将列在一页上。我想在不同的页面上分离不同类型的信息。
因此,我将制作一个多页的Web应用程序。

使用Streamlit创建多个页面

我几乎完全复制了这篇文章,因此请阅读。

为了使用Streamlit创建一个多页的Web应用程序,请编写该应用程序,以便可以使用一个函数对其进行调用。例如,在上面的示例中,它是greeting1greeting2
然后,在侧栏中设置小部件以选择应用程序并调用相应的功能。 (请参见上面的参考页)

这仍然易于实现,但是公开了有用的类(streamlit-multiapps)。
要使用此" streamlit-multiapps"创建MultiPage Web应用,请执行以下四个步骤。

  • 通过导入MultiApp类实例化

  • 定义要在另一个文件中显示的内容(例如,greeting1greeting2)
  • MultiApp类的实例中向add_app(title, func)注册内容

  • 这将在侧边栏中放置一个单选按钮,并允许您选择要显示的内容。

    例如,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import streamlit as st
    from multiapp import MultiApp

    def greeting1():
        st.title('こんにちは, 世界!')
        st.write('ねこはかわいい')

    def greeting2():
        st.title('またまたこんにちは, 世界!!')
        st.write('ねこはとてもかわいい')


    app = MultiApp()
    app.add_app("page1", greeting1)
    app.add_app("page2", greeting2)
    app.run()

    您可以创建这样的页面。

    multi_page_sample1.gif

    做到了

    用于查看上次发布的巧克力球数据的Web应用程序已分成多个页面。
    巧克力球查看器

    由于内容浏览的内容和天使出现概率的模拟完全不同,因此将它们分为不同的页面。

    multi_page_choco.gif

    结束

    参考

  • 使用Streamlit构建多页Web应用
  • streamlit-multiapps
  • 使用Streamlit可视化数据