闪亮包的 tabsetPanel 函数的宽度问题

Width issue with the tabsetPanel function of the package shiny

我来这里是为了解决一个看似简单的问题。我想使用 tabsetPanel 函数使我的面板具有反应性。但是当我使用它时,在我的页面顶部和我的两个面板的名称之间创建了一个空白 space。

下面是一个可重现的例子:

library(shiny)
library(shinydashboard)

ui <- fluidPage(

tabBox(width = 12,title=htmlOutput('Date_Panel'),
     tabsetPanel(id = "AB",

                 tabPanel(
                   value = "A",
                   title = span(icon("lightbulb-o"), HTML('&nbsp;'), strong("A"), style="color:#FE5815;")
                 ),
                 tabPanel(
                   value = "B",
                   title = span(icon("fire-o"), HTML('&nbsp;'), strong("B"), style="color:#FE5815;")
                 )
     )
 )
)

 server <- function(input, output, session) {
  output$Date_Panel <- renderText(if(input$AB=='A'){
  text='title_A'
   }
   else{
   text='title_B'

  }

   )
   }

   shinyApp(ui, server)

当我们去掉tabsetPanel函数后,空白space就没有了。我想使用这个函数没有任何奇怪 space.

预先感谢您的帮助。

要删除 space,您可以从 ui 代码中删除 tabsetPanel:

您的 ui 代码中的修改将是这样的:

ui <- fluidPage(
  
  tabBox(width = 12,title="Title",
         # tabsetPanel(id = "AB",
                     
                     tabPanel(
                       value = "A",
                       title = span(icon("lightbulb-o"), HTML('&nbsp;'), strong("A"), style="color:#FE5815;")
                     ),
                     tabPanel(
                       value = "B",
                       title = span(icon("fire-o"), HTML('&nbsp;'), strong("B"), style="color:#FE5815;")
                     )
         # )
  )
)

通过此修改,您将获得如下所示的输出:

编辑:

您可以根据 tabBox 的 ID 更改标题,而不是 tabsetPanel。看看这段代码:

    library(shiny)
    library(shinydashboard)
    
    ui <- fluidPage(
      
      tabBox(width = 12,title=htmlOutput('Date_Panel'), id = "AB",
              # tabsetPanel(id = "AB",
                         
                         tabPanel(
                           value = "A",
                           title = span(icon("lightbulb-o"), HTML('&nbsp;'), strong("A"), style="color:#FE5815;")
                         ),
                         tabPanel(
                           value = "B",
                           title = span(icon("fire-o"), HTML('&nbsp;'), strong("B"), style="color:#FE5815;")
                         )
              # )
      )
    )
    
    server <- function(input, output, session) {
      output$Date_Panel <- renderText(if(input$AB=='A'){
        text='title_A'
      }
      else{
        text='title_B'
        
      }
      
      )
    }

shinyApp(ui, server)

有了这个你就得到了想要的输出。

希望对您有所帮助!