如何使用Python的Shiny组件输入小时和分钟?
获取Shiny仪表盘的小时和分钟输入
1. 扩展内置日期输入组件
你不用额外找组件,原生的dateInput就支持同时选择日期和时分,只需设置timeFormat参数开启时间选择,还能通过minuteStep控制分钟的可选间隔:
ui <- fluidPage( dateInput( inputId = "datetime", label = "选择日期和时间", value = Sys.time(), timeFormat = "%H:%M", minuteStep = 15 # 可选,设置分钟间隔为15分钟 ) ) server <- function(input, output) { observe({ print(input$datetime) # 输出包含日期、小时、分钟的POSIXct格式对象 }) } shinyApp(ui, server)
2. 专门的时分输入组件
如果只需要单独选择时分(不需要日期),可以借助shinyWidgets包的timeInput组件,它是专门为时分输入设计的:
library(shinyWidgets) ui <- fluidPage( timeInput( inputId = "time", label = "选择时间", value = Sys.time(), seconds = FALSE # 隐藏秒数,仅保留小时和分钟选择 ) ) server <- function(input, output) { observe({ print(input$time) # 输出HH:MM格式的字符串,可自行转换为时间对象 }) } shinyApp(ui, server)
3. 无额外依赖的自定义方案
如果不想安装额外包,也可以用两个sliderInput分别实现小时和分钟的选择,体验也很直观:
ui <- fluidPage( sliderInput("hour", "小时", min = 0, max = 23, value = lubridate::hour(Sys.time())), sliderInput("minute", "分钟", min = 0, max = 59, value = lubridate::minute(Sys.time()), step = 5), verbatimTextOutput("selected_time") ) server <- function(input, output) { output$selected_time <- renderPrint({ paste0(input$hour, ":", sprintf("%02d", input$minute)) # 格式化输出两位分钟数 }) } shinyApp(ui, server)
关于input_text_area
完全没必要用input_text_area来输入时分,它是为多行文本输入设计的,用来输入时间体验极差,属于错误的选择方向。
内容的提问来源于stack exchange,提问作者murcielago
相关产品推荐
相关产品推荐

