R Shiny - 当我最小化 sidebarPanel 时调整 MainPanel 窗口的大小

Posted

技术标签:

【中文标题】R Shiny - 当我最小化 sidebarPanel 时调整 MainPanel 窗口的大小【英文标题】:R Shiny - Resizing the MainPanel window when I minimize the sidebarPanel 【发布时间】:2018-03-03 07:00:03 【问题描述】:

我使用 sidebarPanel 和 mainPanel 构建了一个具有流体页面和布局的 Shiny 应用程序。现在我正在使用一个最小化sidebarPanel的按钮,但是当发生这种情况时,mainPanel会保留它的宽度。我希望主面板调整到新的屏幕尺寸并使用整个窗口,而不是保持它通常使用的原来的 66%。

这是我在 server.r 文件中使用的按钮事件:

observeEvent(input$showpanel, 

if(input$showpanel == TRUE) 

shinyjs::show(id = "Sidebar")
shinyjs::enable(id = "Sidebar")

else 

  shinyjs::hide(id = "Sidebar")

)

这是我在当前位于 mainPanel 窗口顶部的 ui.r 文件中使用的按钮。

mainPanel(
  bsButton("showpanel", "Show/hide sidebar", type = "toggle", value = TRUE),

不知道当我隐藏sidebarPanel时是否有办法在mainPanel窗口中添加css或H​​TML。

【问题讨论】:

【参考方案1】:

您可以通过将mainPanel 的类从col-sm-8 更改为col-sm-12 来增加宽度。看看下面的代码:

library(shiny)
library(shinyjs)
library(shinyBS)

ui <- fluidPage(
  useShinyjs(),
  sidebarLayout(

    sidebarPanel(id = "Sidebar",
      h2("This is a sidebar panel")
    ),

    mainPanel(id ="Main",
      bsButton("showpanel", "Show/hide sidebar", type = "toggle", value = TRUE)
    )
  )

)

server <- function(input, output, session)
  observeEvent(input$showpanel, 

    if(input$showpanel == TRUE) 
      removeCssClass("Main", "col-sm-12")
      addCssClass("Main", "col-sm-8")
      shinyjs::show(id = "Sidebar")
      shinyjs::enable(id = "Sidebar")
    
    else 
     removeCssClass("Main", "col-sm-8")
      addCssClass("Main", "col-sm-12")
      shinyjs::hide(id = "Sidebar")
    
  )




shinyApp(ui = ui, server = server)

【讨论】:

这在我的 Shiny 应用程序 SBista 中有效。感谢您的帮助!

以上是关于R Shiny - 当我最小化 sidebarPanel 时调整 MainPanel 窗口的大小的主要内容,如果未能解决你的问题,请参考以下文章

R: Shiny - 更新 dateRangeInput 开始和结束

R Shiny - 使用javascript回调滚动到给定的数据表行

R Shiny 输入滑块范围值

当我在 Shiny 应用程序中添加新的 fluidRow 时,R 闪亮的仪表图消失了?

在 R Shiny 中创建第二个 UI 元素

R 中 Shiny 中的时间序列预测; Shiny 显示 unix 纪元时间