快速问题 - 我正在使用menuR中的函数graphics=TRUE.对我来说,当我在linux上时,这会导致tcltk显示对话.(你知道怎么做install.packages('some_package')R弹出一个窗口,告诉你选择你要删除哪个CRAN镜像?这就是我的意思).
有时在我做出选择之后(工作正常),窗口然后拒绝消失或响应任何类型的点击 - 我可以正常继续我的R会话但是这个窗口将会徘徊,尽管我努力将其关闭(通过角落里的关闭'x'按钮,或通过对话框本身的'确定'和'取消'按钮).
有没有办法可以摧毁这个窗口,因为我没有办法处理它?我正在寻找相当于graphics.offtcltk的东西.
另外,我注意到我[tcl] grab failed: window not viewable.在使用时经常会出错menu(..,graphics=TRUE),所以这可能是相关的.
干杯.
有时只发生的东西难以复制,而且通常是由于缺陷造成的,如果没有完整的机器规格,很难弄清楚.但是,我可以可靠地获得类似的行为,我可以解决它:
> library(tcltk)
Loading Tcl/Tk interface ... done
> menu(letters[1:5],graphics=TRUE)
^C
Run Code Online (Sandbox Code Playgroud)
通过点击Control-C,我得到了我的R提示符和一个没有响应的对话框,我没有处理.使用窗口管理器控件不执行任何操作,调整窗口大小不会更新窗口.所以...
> tclServiceMode(TRUE)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
然后就醒了.然后我可以按常规方式关闭对话框,或者执行以下操作:
> tkdestroy(".1")
Error: $ operator is invalid for atomic vectors
Run Code Online (Sandbox Code Playgroud)
用一个我不明白的错误摆脱它.".1"是窗口路径,与默认窗口标题相同 - 但如果您在菜单上设置了名称则不行.在这种情况下...嗯,可能有一种方法可以从名称中查找它,但无论如何,一旦你将服务模式设置为TRUE,你可以点击回到桌面整洁的方式.