the wide layout that is set in st.set_page_config is not applied. If I then go to the root page and back to subpage it has updated with the wide layout.
Is there a way to make st.set_page_config run on subpages when that is the landing page?
Not sure if streamlit updated or if I had the st.set_page_config not on line 2 before, but now it works setting st.set_page_config at line 2 after importing streamlit.
Unfortunately, each page is evaluated and run as a separate app, other than the navigation sidebar, so running set_page_config doesn’t automatically apply unless you run it on the subpage. However, as you can see, it does “stick”, so that if you set it on one page, it continues on the following pages unless you set it to a different value. We are looking into ideas for making improvements to multipage apps to include shared functionality for cases exactly like this.
For now, one solution is to make a function that does all the common setup that you want on each page, and then import and run that function on each of the pages.
Make a function that does all the common setup that you want on each page, and then import and run that function on each of the pages.
Thanks @blackary ! Here’s a hacky approach that worked just fine for my purposes, in case someone else finds it helpful:
import streamlit
def set_streamlit_page_config_once():
try:
streamlit.set_page_config(layout="wide")
except streamlit.errors.StreamlitAPIException as e:
if "can only be called once per app" in e.__str__():
# ignore this error
return
raise e
Then I import and call set_streamlit_page_config_once() at the top of each files in pages/
Thanks for stopping by! We use cookies to help us understand how you interact with our website.
By clicking “Accept all”, you consent to our use of cookies. For more information, please see our privacy policy.
Cookie settings
Strictly necessary cookies
These cookies are necessary for the website to function and cannot be switched off. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms.
Performance cookies
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us understand how visitors move around the site and which pages are most frequently visited.
Functional cookies
These cookies are used to record your choices and settings, maintain your preferences over time and recognize you when you return to our website. These cookies help us to personalize our content for you and remember your preferences.
Targeting cookies
These cookies may be deployed to our site by our advertising partners to build a profile of your interest and provide you with content that is relevant to you, including showing you relevant ads on other websites.