我正在寻找自定义Shiny的showNotification功能。
https://gallery.shinyapps.io/116-notifications/
我希望在屏幕中间生成消息,而不是右下角。我不认为这可以原生,但我希望有人会建议如何实现这一目标。
谢谢
答案 0 :(得分:13)
您可以使用tags$style
覆盖CSS类属性(在这种情况下:.shiny-notification
。您还可以使用该方法调整宽度和高度等其他属性。
我在下面使用的应用程序模板取自您提供的链接中的代码。
完整可重现的应用程序如下:
shinyApp(
ui = fluidPage(
tags$head(
tags$style(
HTML(".shiny-notification {
position:fixed;
top: calc(50%);;
left: calc(50%);;
}
"
)
)
),
textInput("txt", "Content", "Text of message"),
radioButtons("duration", "Seconds before fading out",
choices = c("2", "5", "10", "Never"),
inline = TRUE
),
radioButtons("type", "Type",
choices = c("default", "message", "warning", "error"),
inline = TRUE
),
checkboxInput("close", "Close button?", TRUE),
actionButton("show", "Show"),
actionButton("remove", "Remove most recent")
),
server = function(input, output) {
id <- NULL
observeEvent(input$show, {
if (input$duration == "Never")
duration <- NA
else
duration <- as.numeric(input$duration)
type <- input$type
if (is.null(type)) type <- NULL
id <<- showNotification(
input$txt,
duration = duration,
closeButton = input$close,
type = type
)
})
observeEvent(input$remove, {
removeNotification(id)
})
}
)