快速提问 - 我正在使用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)
,因此这可能是相关的。
欢呼声。
答案 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,你就可以点击回到桌面整洁的方式。