我目前正在编写我的第一个闪亮的应用程序,并且在使用一些更微妙的用户界面功能时遇到了一些困难。我正在使用 tcltk 库导入一些简单的对话框,供用户选择本地目录和文件(应用程序只会在本地运行,因此我不会使用闪亮的 fileInput 命令)。这还具有不像 choose.dir 命令那样特定于操作系统的优点(请参阅R Windows OS choose.dir() 文件选择器不会在工作目录打开以获取更多讨论)。
但是,当我在 Windows 中工作时(我在 Windows 10 上进行测试,尽管我在 Linux 中完成了大部分开发工作),我发现调用 tkchooseDirectory 只会打开闪亮应用程序后面的对话框,如果我'正在运行一个闪亮的应用程序,或者如果我只是从那里的控制台调用它,则在 RStudio IDE 后面。这似乎不是一个新问题:http ://r.789695.n4.nabble.com/tkchooseDirectory-opens-dialog-below-browser-window-td4729500.html但我还没有看到任何解决方案。
对于我使用 RStudio 控制台的开发工作,这是一个小麻烦,但鉴于闪亮的应用程序最终将交付给客户端(国家机构),我真的不想因为对话框被应用程序隐藏而加剧它们.
感谢您提供的任何帮助!
[编辑 1] 更多信息:似乎从 RStudio 控制台调用 tkchooseDirectory 时,只有第一次调用 tkchooseDirectory 会导致在应用程序后面显示一个对话框。随后的调用将对话框按预期放置到显示的顶部。此外,这种行为不会发生在 R for Windows GUI 中,并且似乎对 RStudio 及其相关产品来说是特殊的。
[编辑 2] 似乎其他人也遇到过与其他 tcltk 库对话框类似的问题:R 中的 MessageBox
[编辑 3] 最简单的最小示例是运行:
library(tcltk2)
tkchooseDirectory()
在 Windows 10 系统上的 RStudio 控制台中。