获取 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 上递归调用它。
我想知道是否有可能在 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 上递归调用它。