获取 Tk 中 windows 的列表并销毁特定的 (R)

Getting list of windows in Tk and destroying specific ones (R)

我想知道是否有可能在 Tk 中获得 windows 的列表,并销毁特定的。我正在使用 tcltk 接口在 R 中工作,并且正在调用很久以前由其他人编写的函数(我无法编辑),它产生了我不想要的额外 windows 。

从文档 here 看来,默认情况下新的 Toplevel windows 是 .TkRoot 的子代。我知道 Python 有一个 winfo_children 方法,我正在考虑尝试调用 .TkRoot 但我不认为该方法在 tcltk 库中实现。我尝试使用 tcl("winfo", "children", .TkRoot) 但出现错误:[tcl] bad window path name "{}"(我不熟悉实际的 tcl,所以我可能搞砸了这个命令)。

此外,如果有调用 winfo children 的方法,处理结果以识别特定 windows 然后销毁它们的最佳方法是什么?

查看 the R sources,我认为您应该这样做:

tkwinfo("children", .TkRoot)

除了我认为这也行不通,因为 .TkRoot 在 Tk 方面没有相应的小部件。相反,使用由单个句点 (.) 组成的字符串作为搜索的根;那是事物的 Tcl 方面的初始 window 的名称。而且我怀疑你会得到一个没有 R 包装的基本 Tk 小部件名称的原始 Tcl 列表,因为我看不到应用转换的位置......


请注意,结果可能包含您不希望的小部件,如果您想找到所有内容,则需要在每个 window 上递归调用它。