我正在尝试使用R中gWidgets包中的函数gradio为R GUI应用程序创建单选按钮。这是一个简单的R代码示例,我用它来创建这样一个按钮,它为用户提供了一个选项。选择“选择1”和“选择2”。
require(gWidgets)
require("RGtk2")
options("guiToolkit"="RGtk2")
radio_button <- gradio(c("Choice 1","Choice 2"),
selected=1, index=FALSE,
horizontal=FALSE,
container=gwindow(),
handler=function(h,...){
if (svalue(h$obj)=="Choice 1"){
print("Do something")
} else {
print("Do something else")
}
}
)
我遇到的问题是,当用户主动从单选按钮(选项1)的默认选项切换到另一个可用选项(选择2)时,与单选按钮关联的处理程序功能仅按预期工作。 / p>
但是,如果用户将“默认选择(选项1)”保留为“原样”,则处理函数无法识别此默认选项的值。
有没有办法“强制”处理程序函数识别使用gradio创建的单选按钮的默认选项的值?我怀疑只有当用户主动点击默认选项以外的选项时才会识别此值,但似乎违反了默认选项无法识别。
请注意,我遇到了gcheckboxgroup()函数的相同(奇数?)行为,该函数用于生成一组复选框。
非常感谢任何解决此问题的帮助。
提前致谢!
伊莎贝拉
答案 0 :(得分:0)
这是一个解决方法。 Yous使用svalue
将默认值设置为所需的值,如下所示:
svalue(radio_button, index=TRUE) <- 1 ## by index
所有代码变为:
radio_button <- gradio(c("Choice 1","Choice 2"),
selected=2, index=FALSE,
horizontal=FALSE,
container=gwindow(),
handler=function(h,...){
if (svalue(h$obj)=="Choice 1"){
print("Do something")
} else {
print("Do something else")
}
}
)
答案 1 :(得分:0)
您遇到的问题是处理程序仅响应事件。 @agstudy调用svalue的解决方案应该在大多数情况下都可以工作,因为底层窗口小部件会被更改,但可能不适用于所有窗口小部件。你可以将处理程序作为一个可以单独调用的函数来强制它。