У меня есть следующее приложение Shiny for Python, которое я хочу запустить. Приложение начинается с простой страницы приветствия, запрашивающей значение, и кнопки, которую пользователь нажимает после завершения. После нажатия кнопки новая страница отображается с макетом ui.page_navbar (включая текстовое значение, введенное на странице приветствия).
Вот код:
from shiny import App, ui, reactive, render
# main ui object for the app
app_ui = ui.page_fluid(
ui.div(
( "Welcome Screen",
ui.input_text(id='str_val', label='Type in something'),
ui.input_action_button(id="btn_welcome", label="Proceed!"),
),
id="welcome_screen",
),
ui.div(id="main_page")
)
# main server function for the app
def server(input, output, session):
@reactive.effect
@reactive.event(input.btn_welcome, ignore_init=True, ignore_none=True)
def _():
ui.remove_ui(selector="div:has(> #welcome_screen)")
ui.insert_ui(
selector=f"#main-page",
where="beforeBegin",
ui= ui.page_navbar(
ui.nav_panel("Tab 1", "Tab 1 content",ui.output_text('str_val')),
ui.nav_panel("Tab 2", "Tab 2 content"),
ui.nav_panel("Tab 3", "Tab 3 content"),
title="Main Page",
id="page",
),
)
@render.text
def str_val():
return input.str_val()
app = App(app_ui, server)
Когда я запускаю это, экран приветствия загружается и работает как положено. Когда я нажимаю кнопку, экран приветствия исчезает, но затем экран становится пустым, макет ui.page_navbar не появляется. Раньше я успешно использовал ui.insert_ui для размещения содержимого внутри div, но по какой-то причине он не работает с тегом типа page_navbar. Я думал, что, возможно, проблема в том, что объект ui.page_navbar не может быть помещен внутри div (куда я пытаюсь вставить его с помощью ui.insert_ui), но в отдельном тесте я смог сделать это, просто поместив его в коде app_ui вручную.
Я ценю любые предложения.
У меня есть следующее приложение Shiny for Python, которое я хочу запустить. Приложение начинается с простой страницы приветствия, запрашивающей значение, и кнопки, которую пользователь нажимает после завершения. После нажатия кнопки новая страница отображается с макетом ui.page_navbar (включая текстовое значение, введенное на странице приветствия). Вот код: [code]from shiny import App, ui, reactive, render
# main ui object for the app app_ui = ui.page_fluid( ui.div( ( "Welcome Screen", ui.input_text(id='str_val', label='Type in something'), ui.input_action_button(id="btn_welcome", label="Proceed!"), ), id="welcome_screen", ), ui.div(id="main_page") )
# main server function for the app def server(input, output, session): @reactive.effect @reactive.event(input.btn_welcome, ignore_init=True, ignore_none=True) def _(): ui.remove_ui(selector="div:has(> #welcome_screen)")
app = App(app_ui, server) [/code] Когда я запускаю это, экран приветствия загружается и работает как положено. Когда я нажимаю кнопку, экран приветствия исчезает, но затем экран становится пустым, макет ui.page_navbar не появляется. Раньше я успешно использовал ui.insert_ui для размещения содержимого внутри div, но по какой-то причине он не работает с тегом типа page_navbar. Я думал, что, возможно, проблема в том, что объект ui.page_navbar не может быть помещен внутри div (куда я пытаюсь вставить его с помощью ui.insert_ui), но в отдельном тесте я смог сделать это, просто поместив его в коде app_ui вручную. Я ценю любые предложения.