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

如何将waitress进度条应用到Shiny的modalDialog弹窗中?

在Shiny弹窗中绑定Waitress进度条的解决方案

要让Waitress进度条仅显示在modalDialog弹窗上,核心是给弹窗添加唯一ID,然后让进度条绑定到该ID对应的元素。以下是修改后的可运行代码:

library(shiny)
library(shinipsum)
library(waiter)
library(plotly)

complicated_function <- function(){
  # 绑定到ID为plot-modal的弹窗元素
  waitress <- Waitress$new(selector = "#plot-modal", theme = "overlay-dark", min = 0, max = 20)
  for(i in 1:20){
    waitress$inc(1)
    Sys.sleep(0.2)
  }
  waitress$close()
  return(random_ggplotly())
}

ui <- fluidPage(
  useWaitress(),
  actionButton("plotButton", "Generate Plot")
)

server <- function(input,output,session){
  # 给modalDialog添加唯一ID:plot-modal
  modal1 <- modalDialog(
    renderPlotly({
      complicated_function()
    }),
    id = "plot-modal"
  )
  observeEvent(input$plotButton,{
    showModal(modal1)
  })
}

shinyApp(ui, server)

关键改动说明:

  • 给弹窗添加ID:在modalDialog()中加入id = "plot-modal",这是让进度条定位到弹窗的核心前提
  • 绑定进度条到弹窗:在Waitress$new()中指定selector = "#plot-modal",告诉进度条只覆盖该ID对应的元素
  • 优化进度条样式:将theme改为overlay-dark,让进度条在弹窗背景上更清晰(可根据需求调整)

这样修改后,进度条就只会在弹窗区域内显示,不会覆盖整个页面。

内容的提问来源于stack exchange,提问作者king_of_limes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:45:05