【问题标题】:Shiny splitLayout and selectInput issue闪亮的 splitLayout 和 selectInput 问题
【发布时间】:2017-02-25 21:44:47
【问题描述】:

当我在 R Shiny 中结合 splitLayout 和 selectInput 时,出现了问题。

选项的下拉列表无法正确显示。

我们如何解决这个问题。

请检查可重现的代码。

library(shiny)

server <- function(input, session, output) {

  output$select_1 = renderUI({
    selectInput("select_input","select", choices = LETTERS)
  })



}

ui <- fluidPage(
  splitLayout(
    uiOutput("select_1")
  )
)

shinyApp(ui = ui, server = server)

我有 8 个选择输入,我想将它们均匀地并排放置在一行中。

使用fluidrow 不行,因为列宽只能是整数。

我想知道是否有其他方法可以做到这一点。

【问题讨论】:

  • 如果它确实是一个错误,即行为与记录的不同,那么联系包维护者是推荐的路径。也就是说,除非维护者在某处声明在 SO 上发帖是正确的策略。

标签: r shiny


【解决方案1】:

这是一个潜在的解决方法。下拉菜单的父 div 似乎具有 overflow: auto 样式,它会阻止下拉菜单。更改为 visible 即可解决此问题。

library(shiny)

server <- function(input, session, output) {

  output$select_1 <- renderUI({
    selectInput("select_input","select", choices = LETTERS)
  })

}

ui <- fluidPage(
  splitLayout(
    uiOutput("select_1"),
    tags$head(tags$style(HTML("
                              .shiny-split-layout > div {
                                overflow: visible;
                              }
                              ")))
  )
)

shinyApp(ui = ui, server = server)

【讨论】:

  • 拆分布局的一个问题是,如果选择输入组件内的选项文本很长,它不会流入下一行。如 rafaelmarino 在github.com/rstudio/shiny/issues/1531 中提到的,在这种情况下使用fluidRow 解决了这个问题
【解决方案2】:

我尝试了@Xiongbing Jin 的解决方案,但这并没有完全解决我的问题,而是将我推向了这个解决方案:

# in ui.R
splitLayout(
  tags$head(tags$style(HTML(".shiny-split-layout > div {overflow: visible;}"))),
  cellWidths = c("0%","50%", "50%"), # note the 0% here at position zero...
  selectInput("A", label = "A LBL",),
  selectInput("B", label = "B LBL")
)

【讨论】:

    猜你喜欢
    • 2015-09-23
    • 2019-01-24
    • 2020-08-02
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 2019-03-20
    • 2015-08-03
    相关资源
    最近更新 更多