我注意到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
}
答案 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
要好得多。