首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用R包gWidgets中的gradio函数创建的单选按钮的处理程序函数

使用R包gWidgets中的gradio函数创建的单选按钮的处理程序函数
EN

Stack Overflow用户
提问于 2013-06-28 04:31:39
回答 2查看 445关注 0票数 1

我正在尝试使用R中的gWidgets包中的函数gradio为R.应用程序创建单选按钮。这里是一个简单的R代码示例,我使用它来创建这样的按钮,它为用户提供了在“选项1”和“选项2”之间进行选择的选项。

代码语言:javascript
复制
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()函数的行为,该函数用于生成一组复选框。

任何帮助解决这个问题的人都将不胜感激。

提前感谢!

伊莎贝拉

EN

回答 2

Stack Overflow用户

发布于 2013-06-28 05:56:14

这里有一个变通方法。您可以使用svalue将默认值设置为所需值,如下所示:

代码语言:javascript
复制
svalue(radio_button, index=TRUE) <- 1  ## by index

所有代码变为:

代码语言:javascript
复制
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")
                         }
                       }
)
票数 0
EN

Stack Overflow用户

发布于 2013-06-28 08:38:13

您遇到的问题是处理程序只对事件做出响应。@agstudy调用svalue的解决方案在大多数情况下都应该有效,因为底层窗口小部件发生了变化,但可能不是所有的窗口小部件都有效。您可以通过将处理程序保留为可以单独调用的函数来强制它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17352619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档