You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shiny应用中实现带分组和图标装饰的下拉输入?

在Shiny中实现带分组与图标装饰的下拉输入

可以借助shinyWidgets包的pickerInput组件实现需求,该组件支持选项分组、自定义HTML内容(包括图标),以下是完整实现示例:

完整代码

library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  tags$head(
    # 引入Font Awesome图标样式
    tags$link(rel = "stylesheet", href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css")
  ),
  
  titlePanel("带分组与图标的下拉选择"),
  
  sidebarLayout(
    sidebarPanel(
      pickerInput(
        inputId = "grouped_icon_picker",
        label = "选择工具",
        # 定义分组与带图标的选项
        choices = list(
          "办公工具" = list(
            "<i class='fa fa-file-word-o'></i> Word文档" = "word",
            "<i class='fa fa-file-excel-o'></i> Excel表格" = "excel",
            "<i class='fa fa-powerpoint'></i> PPT演示" = "ppt"
          ),
          "通讯工具" = list(
            "<i class='fa fa-weixin'></i> 微信" = "wechat",
            "<i class='fa fa-qq'></i> QQ" = "qq",
            "<i class='fa fa-envelope-o'></i> 邮箱" = "email"
          ),
          "开发工具" = list(
            "<i class='fa fa-code'></i> 代码编辑器" = "editor",
            "<i class='fa fa-github'></i> GitHub" = "github"
          )
        ),
        choicesOpt = list(html = TRUE), # 允许渲染HTML格式的选项
        options = list(
          iconBase = "fa",
          liveSearch = TRUE, # 开启实时搜索功能
          style = "btn-primary", # 设置按钮样式
          size = "normal" # 下拉框尺寸
        ),
        selected = "word" # 默认选中项
      )
    ),
    
    mainPanel(
      h4("选中结果:"),
      verbatimTextOutput("selected_value")
    )
  )
)

server <- function(input, output) {
  output$selected_value <- renderPrint({
    input$grouped_icon_picker
  })
}

shinyApp(ui, server)

关键说明

  • 分组设置:通过嵌套列表定义分组,外层列表的名称即为分组标题,内层列表是该分组下的选项
  • 图标添加:在选项标签中嵌入Font Awesome的<i>标签,配合choicesOpt = list(html = TRUE)确保HTML内容被正确渲染
  • 功能增强:通过options参数可添加实时搜索、自定义按钮样式等功能,提升交互体验

内容的提问来源于stack exchange,提问作者Stéphane Laurent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:18:02