有没有办法从gWidget获取容器?

时间:2014-12-31 22:50:21

标签: r object user-interface gwidgets

问题

我注意到delete(obj,widget,...)需要要删除的小部件的容器/父obj。是否有一种简单的方法可以直接从widget提取此内容?

上下文

我试着写一个快速的,万无一失的'小部件刷新功能删除并重新添加相同的小部件(la https://stackoverflow.com/a/6571570/2023432)或另一个小部件以替换它,并尽早遇到上述问题:

refresh.widget <- function(old.widget, new.widget = old.widget) {
    delete(old.widget$container, old.widget)
    new.widget
}

1 个答案:

答案 0 :(得分:1)

我能想到的唯一解决方法是为每个小部件树构建一个层次结构,其中包含一些列表中的函数;

之类的东西
widget.tree <- list()
add.widget <- function(tree,my.parent,new.widget) {
  widget.tree[new.widget] <- list(widget = new.widget, 
                                  parent = my.parent)
  add(my.parent, new.widget)
}

然后仅通过对这些属性进行操作的函数与树中的小部件进行交互。这似乎有点像很多机器,它开始带你回到通过R直接使用GUI工具包,让你失去gWidgets的便利性。我自己也不打算使用这种解决方法。正如@jverzani所说,如果可以的话,使用gWidgets2要好得多。