【问题标题】:Shiny: Label position, textInput闪亮:标签位置,文本输入
【发布时间】:2017-06-27 15:20:56
【问题描述】:

假设我有一个非常简单的应用程序,它只有 8 个输入分组在 2 个面板中(4 个输入 | 4 个输入 - 见下图),基于这些,我绘制了一个小图(简单易懂)。

我面临的问题是我只想为第一个面板设置标签,并且在 textInput 框的左侧。

例如(请原谅我草率的图像编辑!)

有什么建议吗?

我的图 1 输出的 MWE:

library(shiny)
ui<-shinyUI(fluidPage(
  wellPanel(
    tags$style(type="text/css", '#leftPanel { max-width:300px; float:left;}'),
    id = "leftPanel",
    textInput("Population1000", 'Population 1000',"15"),
    textInput("Area1000",'Area  1000', "20"),
    textInput("GNI1000", 'GNI 1000', "2314"),
    textInput("GDP1000", "GDP 1000", "1000")
  ),
  wellPanel(
    tags$style(type="text/css", '#RightPanel { max-width:300px; float:left;}'),
    id = "RightPanel",
    textInput("Population2000", 'Population 2000',"15"),
    textInput("Area2000",'Area 2000', "20"),
    textInput("GNI2000", 'GNI 2000', "2314"),
    textInput("GDP2000", "GDP 2000", "1000")
  )
)
)
server<-shinyServer(function(input, output) {NULL})
shinyApp(ui,server)

【问题讨论】:

    标签: css r shiny styles


    【解决方案1】:

    您好,您可以尝试使用 Bootstrap 的horizontal form,看看下面的代码,它创建了 3 列,每列宽度为 4。您可以在 class = "col-sm-4 control-label" 中更改标签的宽度,在 width = 4 中更改输入的宽度。

    library("shiny")
    ui <- fluidPage(
    
      fluidRow(
        column(
    
          width = 4,
    
          tags$form(
            class="form-horizontal",
    
            tags$div(
              class="form-group",
              tags$label(class = "col-sm-4 control-label", `for` = "Population1000", br(), "Population"),
              column(width = 4, textInput(inputId = "Population1000", label = "Year 1000", value = "15")),
              column(width = 4, textInput(inputId = "Population2000", label = "Year 2000", value = "15"))
            ),
    
            tags$div(
              class="form-group",
              tags$label(class = "col-sm-4 control-label", `for` = "Area1000", "Area"),
              column(width = 4, textInput(inputId = "Area1000", label = NULL, value = "20")),
              column(width = 4, textInput(inputId = "Area2000", label = NULL, value = "20"))
            ),
    
            "..."
    
          )
        )
      )
    
    )
    
    server <- function(input, output) {
    
    }
    
    shinyApp(ui = ui, server = server)
    

    结果:

    PS : 你不应该对输入使用相同的 id。

    【讨论】:

    • 嗨@Victorp,这确实是一个非常好的解决方案,但它不能解决我的问题,因为我无法将我的条目分组到面板中 - 或类似的东西。本质上,每一列应该代表一年(例如 1000、2000),因此,应该有一种方法来区分列(例如标题)。 (抱歉没有在图片中更清楚。我会做出改变)
    • 最简单的方法是在您的第一个输入中放置一个标签,并在左侧的标签中添加一个换行符。查看修改
    • 太棒了,经过测试,效果很好。
    猜你喜欢
    • 1970-01-01
    • 2016-03-23
    • 2021-09-10
    • 2020-05-24
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多