R关闭“菜单”窗口(tcltk)?(相当于tcltk的graphics.off?)

R关闭“菜单”窗口(tcltk)?(相当于tcltk的graphics.off?),r,tcl,tk,R,Tcl,Tk,快速提问-我正在使用R中的菜单功能和graphics=TRUE。 对我来说,因为我在linux上,所以会显示一个tcltk对话框。(您知道如何安装.packages('some_package')R弹出一个窗口,告诉您选择要删除哪个CRAN镜像?这就是我的意思) 有时,在我做出选择(这很好)后,窗口拒绝消失或对任何形式的点击做出响应-我可以正常继续我的R会话,但此窗口将挂起,尽管我努力将其关闭(通过角落中的关闭“x”按钮,或通过对话本身上的“确定”和“取消”按钮) 既然我没有控制权,有没有办法破

快速提问-我正在使用R中的
菜单
功能和
graphics=TRUE
。 对我来说,因为我在linux上,所以会显示一个
tcltk
对话框。(您知道如何安装.packages('some_package')R弹出一个窗口,告诉您选择要删除哪个CRAN镜像?这就是我的意思)

有时,在我做出选择(这很好)后,窗口拒绝消失或对任何形式的点击做出响应-我可以正常继续我的R会话,但此窗口将挂起,尽管我努力将其关闭(通过角落中的关闭“x”按钮,或通过对话本身上的“确定”和“取消”按钮)

既然我没有控制权,有没有办法破坏这扇窗户我正在为tcltk寻找一个与
graphics.off相当的

另外,我注意到我经常会遇到一个错误
[tcl]抓取失败:窗口不可见。
当使用
菜单(..,graphics=TRUE)
时,这可能是相关的


干杯。

只有偶尔才会发生的事情很难复制,而且往往是由于错误造成的,如果没有完整的机器规格,就很难弄清楚。但是,我可以可靠地获得类似的行为,并且我可以修复它:

> 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,您就可以单击返回到桌面整洁状态。

只有有时才会发生的事情很难重现,通常是由于错误,并且在没有完整的机器规格的情况下很难找出原因。但是,我可以可靠地获得类似的行为,并且我可以修复它:

> 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,你就可以单击返回桌面整洁状态。

顺便说一句,这种烦恼在我的Ubuntu机器R 2.14上可靠地发生,但在我的Fedora机器上不可靠,而且它们都在
graphcs=TRUE
时使用Tltk界面,这种烦恼确实发生在我的Ubuntu机器R 2.14上,但不是在我的Fedora机器上,当
graphcs=TRUE
时,它们都使用tcltk接口。诊断:Tcl/Tk事件循环没有得到服务。这很关键,因为事件是OS/X11/WM与Tk通信的方式。(从技术上讲,它们在文件描述符上发送消息,“事件循环”将其转换为可调度事件。)非常感谢!我确实命名了我的菜单,但我肯定会使用
tclServiceMode(TRUE)
并亲自关闭窗口。我想知道这个
[tcl]:grab failed
的意思是什么(我觉得这是问题的原因),但是我能够可靠地重现它的环境有点奇怪,我需要缩小它们的范围,然后才能在这里提问。诊断:tcl/Tk事件循环没有得到服务。这很关键,因为事件是OS/X11/WM与Tk通信的方式。(从技术上讲,它们在文件描述符上发送消息,“事件循环”将其转换为可调度事件。)非常感谢!我确实命名了我的菜单,但我肯定会使用
tclServiceMode(TRUE)
并亲自关闭窗口。我想知道这个
[tcl]:grab failed
的意思是什么(我觉得这就是问题的原因),但是我能够可靠地重现它的环境有点奇怪,我需要缩小范围,然后才能在这里提问。