【问题标题】:How to create a sidebar navigation menu inside a single tabPanel in a navbarPage in shiny?如何在闪亮的 navbarPage 中的单个 tabPanel 内创建侧边栏导航菜单?
【发布时间】:2020-01-04 12:55:24
【问题描述】:

所以我有一个闪亮的应用程序,它是一个 navbarPage,我想只在其中一个页面内创建一个侧边栏导航菜单。

我有两列,每列都有文本和输入/操作/下载按钮,我的目标是在侧边栏上有两个按钮,作为我的两列之一的输出。

基本上,目前它们同时并排出现,我希望它们一次出现一个,方法是单击两个侧边栏标签按钮之一。

如果让我感到困惑,我真的很抱歉,我正在尽力而为

这是我的带有两列的 tabPanel:

navbarPage(
tabPanel(title="Download two different tsv files",

######## FIRST COLUMN IN MY tabPanel

fluidRow(
    column(6,align="center", tags$strong("Download tsv file number one"),
                     textInput(inputId="input1",tags$strong("Enter the name of the set of data you want to download"),placeholder="Example: something"),
                   downloadBttn("downloadData","Download tsv 1")
)),

####### SECOND COLUMN
fluidRow(
column(6,align="center", tags$strong("Download tsv file number two"),
                                          downloadBttn('downloadData2','Download tsv 2')))
)
)

我怀疑我可能需要使用 tabsetPanel 之类的东西,或者另一方面只是使用 sidebarPanel 和 mainPanel 移动,但我很迷茫,想知道是否有人知道如何做到这一点

提前感谢您的任何回答

【问题讨论】:

  • 请发布程序的所有必需库、用户界面和服务器端。

标签: r shiny


【解决方案1】:

不确定这是否完全涵盖了您的情况(所需布局的绘图会非常有帮助),但这是一个应用程序,其中一个选项卡中的侧边栏布局和两列中的内容动态显示/隐藏。请注意,它使用shinyWidgets::checkboxGroupButtons 而不是常规的actionButtonactionBttn

library(shiny)
library(shinyWidgets)

ui <-
  navbarPage(title = "T I T L E",
    tabPanel(title = "Download two different tsv files",
                      sidebarLayout(
                        sidebarPanel(
                          width = 2,
                          checkboxGroupButtons(inputId = "show", 
                                               label = "Show column:", 
                                               choices = c("Column 1", "Column 2"))
                        ),
                      mainPanel(
                          fluidRow(
                          column(6,
                                 uiOutput("col1")),
                          column(6,
                                 uiOutput("col2"))
                        )
                        )
                      )
    ),
    tabPanel(title = "Tab 2")

    )


server <- function(input, output, session) {
  col1 <- reactive({
    if ("Column 1" %in% input$show) {
      x <- tagList(
      h4("Stuff for first column"),
      actionButton('btn1', 'Button for column 1')
      )
    } else {
      x <- div()
    }
    x
  })

  output$col1 <- renderUI({
    col1()
  })

  col2 <- reactive({
    if ("Column 2" %in% input$show) {
      x <- tagList(
      h4("Stuff for second column"),
      actionButton('btn2', 'Button for column 2')
      )
    } else {
      x <- div()
    }
    x
  })

  output$col2 <- renderUI({
    col2()
  })

}

shinyApp(ui, server)

【讨论】:

    猜你喜欢
    • 2018-02-19
    • 2014-04-21
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2016-06-19
    • 2014-09-02
    相关资源
    最近更新 更多