R关闭`menu`窗口(tcltk)? (相当于tcltk的graphics.off?)

时间:2012-02-29 00:39:04

标签: r tcl tk

快速提问 - 我正在使用menu中的graphics=TRUE函数。 对我来说,因为我在linux上,这导致显示tcltk对话。 (你知道怎么做install.packages('some_package') R会弹出一个窗口,告诉你选择你要删除哪个CRAN镜像?这就是我的意思。)

有时在我做出选择后(工作正常),窗口会拒绝消失或响应任何类型的点击 - 我可以像往常一样继续我的R会话但是这个窗口会挂起来尽管我努力关闭它向下(通过角落中的关闭'x'按钮,或通过对话本身上的'确定'和'取消'按钮)。

有没有办法可以摧毁这个窗口,因为我没有办法处理它? 我正在为tcltk寻找等效的graphics.off

此外,我注意到在使用[tcl] grab failed: window not viewable.时经常会出现错误menu(..,graphics=TRUE),因此这可能是相关的。

欢呼声。

1 个答案:

答案 0 :(得分:6)

有时只发生的东西难以复制,而且通常是由于缺陷造成的,如果没有完整的机器规格,很难弄清楚。但是,我可以可靠地获得类似的行为,我可以解决它:

> library(tcltk)
Loading Tcl/Tk interface ... done
> menu(letters[1:5],graphics=TRUE)
^C

此时点击Control-C我得到了我的R提示符和一个没有响应的对话框,我没有处理。使用窗口管理器控件不执行任何操作,调整窗口大小不会更新窗口。所以......

> tclServiceMode(TRUE)
[1] FALSE
然后它就会醒来。然后我可以按常规关闭对话框,或者执行:

> tkdestroy(".1")
Error: $ operator is invalid for atomic vectors

用一个我不明白的错误摆脱它。 “.1”是窗口路径,与默认窗口标题相同 - 但如果您在菜单上设置了名称则不行。在这种情况下...嗯,可能有一种方法可以从名称中查找它,但无论如何,一旦你将服务模式设置为TRUE,你就可以点击回到桌面整洁的方式。