如何触发按钮的处理程序?

时间:2014-03-29 23:40:19

标签: r button user-interface handler gwidgets

如何在gWidgets2中触发按钮的处理程序?举个例子:

w <- gwindow("Buttons", visible=FALSE)
g <- ggroup(cont=w, horizontal=FALSE)

## various buttons

## without icon
b2 <- gbutton("ouvrir", cont=g)

## with a handler
b4 <- gbutton("click me", cont=g, handler=function(h,...) {
    if(svalue(b2) == "open")
        svalue(b2) <- "ouvrir"
    else
        svalue(b2) <- "open"
})

visible(w) <- TRUE

我可以使用鼠标和&#34;物理&#34;触发b4的处理程序。点击按钮。但是如何通过一些R代码实现这一目标呢?我希望有activateHandler(b4)或类似的东西。

1 个答案:

答案 0 :(得分:1)

根据评论中的建议,我可以通过b4$invoke_change_handler()。或者通过将处理程序重新定义为单独的函数:

w <- gwindow("Buttons", visible=FALSE)
g <- ggroup(cont=w, horizontal=FALSE)
## various buttons
## without icon
h2 <- function(h,...) {
if(svalue(b2) == "open")
svalue(b2) <- "ouvrir"
else
svalue(b2) <- "open"
}
b2 <- gbutton("ouvrir", cont=g)
## with a handler
b4 <- gbutton("click me", cont=g, handler=h2)
visible(w) <- TRUE

然后调用:h2()