gpt4 book ai didi

r - 如何在 Shiny 中创建倒数计时器?

转载 作者:行者123 更新时间:2023-12-04 10:58:17 26 4
gpt4 key购买 nike

我希望能够为我正在开发的 R Shiny 应用程序创建倒数计时器(例如:20 分钟,然后计时器发出哔哔声),用户可以通过单击开始/停止/来启动、停止和重置复位按钮。我见过一些倒计时的例子,它们计入特定的日期/时间,但还没有遇到过一个用于通用计时器的倒计时。这样的事情可能吗?任何帮助,将不胜感激!

最佳答案

这是一种可能的方法。我们使用两个 reactiveVal 's,一个用于跟踪剩余时间,另一个用于存储计时器当前是否处于事件状态。

希望这可以帮助!

enter image description here

library(lubridate)
library(shiny)

ui <- fluidPage(
hr(),
actionButton('start','Start'),
actionButton('stop','Stop'),
actionButton('reset','Reset'),
numericInput('seconds','Seconds:',value=10,min=0,max=99999,step=1),
textOutput('timeleft')

)

server <- function(input, output, session) {

# Initialize the timer, 10 seconds, not active.
timer <- reactiveVal(10)
active <- reactiveVal(FALSE)

# Output the time left.
output$timeleft <- renderText({
paste("Time left: ", seconds_to_period(timer()))
})

# observer that invalidates every second. If timer is active, decrease by one.
observe({
invalidateLater(1000, session)
isolate({
if(active())
{
timer(timer()-1)
if(timer()<1)
{
active(FALSE)
showModal(modalDialog(
title = "Important message",
"Countdown completed!"
))
}
}
})
})

# observers for actionbuttons
observeEvent(input$start, {active(TRUE)})
observeEvent(input$stop, {active(FALSE)})
observeEvent(input$reset, {timer(input$seconds)})

}

shinyApp(ui, server)

关于r - 如何在 Shiny 中创建倒数计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49250167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com