为啥我的 Streamlit 应用程序会多次打开?

Posted

技术标签:

【中文标题】为啥我的 Streamlit 应用程序会多次打开?【英文标题】:Why does my Streamlit application open multiple times?为什么我的 Streamlit 应用程序会多次打开? 【发布时间】:2020-03-06 07:51:52 【问题描述】:

我正在尝试使用启动 Streamlit 应用程序

import os
os.popen("streamlit run stockXchange.py")

当我运行这段代码时,会有无数个流光窗口,每隔 3 秒左右就会一个接一个地弹出。阻止这些窗口弹出的唯一方法是完全关闭输出窗口。 (我正在使用 PyCharm)

这是我的代码:

import os
import streamlit as st
class Streamlit:


    def __init__(self):
        Streamlit.setup()


    def setup(self):
        st.title("StockXchange GUI")
        query = st.text_input("Enter company name:")
        if st.button("Go"):
            #calls the application function
            load(query)



if __name__ == "__main__":
    print(starttext)
    print(os.popen("streamlit run stockXchange.py").read())
    #Workaround 'missing 1 required positional argument: 'self'' Error
    Streamlit.setup(Streamlit)

我希望只弹出一个窗口,而不是无限数量的窗口。

有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

使用 Streamlit,您无需创建类包装器即可运行您的 Streamlit 应用程序。

假设您的stockXchange.py 是streamlit 应用程序,那么它应该从命令行或from the PyCharm console 运行,如下所示:

streamlit run stockXchange.py

您班级中的以下所有行都应放入该文件中:

st.title("StockXchange GUI")
query = st.text_input("Enter company name:")
if st.button("Go"):
    #the rest of stockXchange.py pertaining to the query

您获得无限流光窗口的原因是以下行在程序执行方面创建了一个无限循环:

if __name__ == "__main__":
    os.popen("streamlit run stockXchange.py")

【讨论】:

以上是关于为啥我的 Streamlit 应用程序会多次打开?的主要内容,如果未能解决你的问题,请参考以下文章

打包 streamlit 应用并在 Windows 上运行可执行文件

Streamlit 浏览器应用程序无法从 Sagemaker 终端打开

如何使用python在streamlit应用程序中打开atoti链接?

为啥级联 ManualResetEvents 的多次等待会使执行时间增加三倍?

为啥我的按钮点击执行多次?

为啥控件的类名不好?不能创建新的 GDI 句柄?