Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以使用R gWidgets创建时间旋转控件吗?_R_User Interface_Gwidgets - Fatal编程技术网

可以使用R gWidgets创建时间旋转控件吗?

可以使用R gWidgets创建时间旋转控件吗?,r,user-interface,gwidgets,R,User Interface,Gwidgets,我可以用R gWidgets创建一个如下所示的时间旋转控件吗 我尝试创建自己的: w <- gwindow(height = 30) glabel(container = w, "H:") analysisTimeStartH <- gspinbutton(container = w, from = 0, to = 23, by = 1) glabel(container = w, "M:") analysisTimeStartM <- gspinbutton(contain

我可以用R gWidgets创建一个如下所示的时间旋转控件吗

我尝试创建自己的:

w <- gwindow(height = 30)
glabel(container = w, "H:")
analysisTimeStartH <- gspinbutton(container = w, from = 0, to = 23, by = 1)
glabel(container = w, "M:")
analysisTimeStartM <- gspinbutton(container = w, from = 0, to = 59, by = 1)
glabel(container = w, "S:")
analysisTimeInterval <- gspinbutton(container = w, from = 0, to = 59, by = 1)

不幸的是,有一个基本假设,即要从中选择的值是数字。这对于tcltk来说是不必要的,但对于Gtk来说似乎是必要的,所以很可能不会改变。你的方法可以发挥作用。以下是关于您的方法的更多信息,这些方法实施了一些限制:

library(gWidgets2)
options(guiToolkit="tcltk")

TimeSpinner <- setRefClass("TimeSpinner",
                           fields=c("hour", "minute", "second"),
                           methods=list(
                               initialize = function(container, h=0, m=0, s=0, ...) {
                                   g <- ggroup(cont=container)
                                   hour <<- gspinbutton(from=0, to=23, by=1, value=h, cont=g)
                                   minute <<- gspinbutton(from=-1, to=60, by=1, value=m, cont=g)
                                   second <<- gspinbutton(from=-1, to=60, by=1, value=s, cont=g)
                                   add_handlers()
                                   callSuper(...)
                               },
                               get_value=function() {
                                   list(hour=svalue(hour), minute=svalue(minute), second=svalue(second))
                               },
                               set_value=function(h,m,s) {
                                   hour$set_value(h)
                                   minute$set_value(m)
                                   second$set_value(s)
                               },
                               add_handlers=function() {
                                   addHandlerChanged(hour, function (h,...) {
                                       val <- svalue(hour)
                                       if (val < 0)
                                           hour$set_value(0)
                                       else if (val > 23)
                                           hour$set_value(23)
                                   })
                                   addHandlerChanged(minute, function(h,...) {
                                       val <- svalue(minute)
                                       if (val == -1) {
                                           minute$set_value(59)
                                           hour$set_value(svalue(hour) - 1)
                                       } else if(val == 60) {
                                           minute$set_value(0)
                                           hour$set_value(svalue(hour) + 1)
                                       }
                                   })
                                    addHandlerChanged(second, function(h,...) {
                                       val <- svalue(second)
                                       if (val == -1) {
                                           second$set_value(59)
                                           minute$set_value(svalue(hour) - 1)
                                       } else if(val == 60) {
                                           second$set_value(0)
                                           minute$set_value(svalue(hour) + 1)
                                       }
                                   })
                               }
                           ))

w <- gwindow()
ts <- TimeSpinner$new(w)
库(gWidgets2)
选项(guiToolkit=“tcltk”)
时间微调器
library(gWidgets2)
options(guiToolkit="tcltk")

TimeSpinner <- setRefClass("TimeSpinner",
                           fields=c("hour", "minute", "second"),
                           methods=list(
                               initialize = function(container, h=0, m=0, s=0, ...) {
                                   g <- ggroup(cont=container)
                                   hour <<- gspinbutton(from=0, to=23, by=1, value=h, cont=g)
                                   minute <<- gspinbutton(from=-1, to=60, by=1, value=m, cont=g)
                                   second <<- gspinbutton(from=-1, to=60, by=1, value=s, cont=g)
                                   add_handlers()
                                   callSuper(...)
                               },
                               get_value=function() {
                                   list(hour=svalue(hour), minute=svalue(minute), second=svalue(second))
                               },
                               set_value=function(h,m,s) {
                                   hour$set_value(h)
                                   minute$set_value(m)
                                   second$set_value(s)
                               },
                               add_handlers=function() {
                                   addHandlerChanged(hour, function (h,...) {
                                       val <- svalue(hour)
                                       if (val < 0)
                                           hour$set_value(0)
                                       else if (val > 23)
                                           hour$set_value(23)
                                   })
                                   addHandlerChanged(minute, function(h,...) {
                                       val <- svalue(minute)
                                       if (val == -1) {
                                           minute$set_value(59)
                                           hour$set_value(svalue(hour) - 1)
                                       } else if(val == 60) {
                                           minute$set_value(0)
                                           hour$set_value(svalue(hour) + 1)
                                       }
                                   })
                                    addHandlerChanged(second, function(h,...) {
                                       val <- svalue(second)
                                       if (val == -1) {
                                           second$set_value(59)
                                           minute$set_value(svalue(hour) - 1)
                                       } else if(val == 60) {
                                           second$set_value(0)
                                           minute$set_value(svalue(hour) + 1)
                                       }
                                   })
                               }
                           ))

w <- gwindow()
ts <- TimeSpinner$new(w)