我正在尝试使用R中的gWidgets包中的函数gradio为R.应用程序创建单选按钮。这里是一个简单的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)时,与单选按钮关联的处理函数才能按预期工作。
但是,如果用户将默认选项(选项1)保留为“原样”,则处理程序函数无法识别此默认选项的值。
有没有办法“强制”处理函数识别使用gradio创建的单选按钮的默认选项的值?我怀疑只有当用户主动单击默认选项以外的其他选项时,才会识别此值,但默认选项不会被识别似乎是违反直觉的。
请注意,我也遇到过同样的问题(奇怪?)gcheckboxgroup()函数的行为,该函数用于生成一组复选框。
任何帮助解决这个问题的人都将不胜感激。
提前感谢!
伊莎贝拉
发布于 2013-06-28 05:56:14
这里有一个变通方法。您可以使用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")
}
}
)发布于 2013-06-28 08:38:13
您遇到的问题是处理程序只对事件做出响应。@agstudy调用svalue的解决方案在大多数情况下都应该有效,因为底层窗口小部件发生了变化,但可能不是所有的窗口小部件都有效。您可以通过将处理程序保留为可以单独调用的函数来强制它。
https://stackoverflow.com/questions/17352619
复制相似问题