向 Shiny 中的禁用按钮添加工具提示?

Posted

技术标签:

【中文标题】向 Shiny 中的禁用按钮添加工具提示?【英文标题】:Adding tooltip to disabled button in Shiny? 【发布时间】:2016-11-07 18:23:27 【问题描述】:

在 R/Shiny 中,我想添加一个 tooltip 来通知用户一个按钮被禁用,因为必填字段未完成。

我可以使用ShinyBS 包显示工具提示,但是当按钮被禁用时它似乎不起作用。下面是一个最小的工作示例。

是否有一个简单的修复方法可以让工具提示在 Shiny 中的禁用按钮上工作?

ui.R

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


shinyUI(pageWithSidebar(
headerPanel("actionButton test"),
sidebarPanel(
numericInput("n", "N:", min = 0, max = 100, value = 50),
br(),
actionButton("goButton", "Disabled!"),
actionButton("goButton2", "Go!"),
bsTooltip("goButton", "Tooltip broken", placement = "bottom", trigger = "hover",
           options = NULL),
bsTooltip("goButton2", "Tooltip works", placement = "bottom", trigger = "hover",
           options = NULL)
),
 mainPanel(useShinyjs(),
 verbatimTextOutput("nText")
)
))

服务器.R

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

shinyServer(function(input, output,session) 

ntext <- eventReactive(input$goButton, 
input$n
)

shinyjs::disable("goButton2")

output$nText <- renderText(
 ntext()
)
)

【问题讨论】:

【参考方案1】:

这是解决您的问题的一种方法,而是为您的按钮提供标题:

#rm(list=ls())
library(shinyBS)
library(shiny)
library(shinyjs)

ui <- pageWithSidebar(
  headerPanel("actionButton test"),
  sidebarPanel(numericInput("n", "N:", min = 0, max = 100, value = 50),
    tags$div(style="display:inline-block",title="Tooltip broken",actionButton("goButton", "Disabled!")),
    tags$div(style="display:inline-block",title="Tooltip works",actionButton("goButton2", "Go!"))    
  ),
  mainPanel(useShinyjs(),
            verbatimTextOutput("nText")
  )
)

server <- shinyServer(function(input, output,session) 
  
  ntext <- eventReactive(input$goButton, input$n)
  shinyjs::disable("goButton2")
  output$nText <- renderText(ntext())
  
)
shinyApp(ui = ui, server = server)

【讨论】:

感谢您的解决方案 - 是我自己还是偶尔用这种方法显示工具提示的延迟? 是的,会有延迟,你可以用自定义JS 覆盖它,但我认为没有必要

以上是关于向 Shiny 中的禁用按钮添加工具提示?的主要内容,如果未能解决你的问题,请参考以下文章

MFC为禁用的单选按钮添加工具提示

有没有办法在禁用的 QWidget 上显示工具提示

禁用按钮时在悬停时显示工具提示

jQuery 不会在禁用按钮上触发悬停事件吗?

在绘图加载时禁用闪亮按钮

如何在禁用按钮上显示 ui-bootstrap 工具提示?