gpt4 book ai didi

r - tcltk 对话框出现在 RStudio/Shiny Windows 下

转载 作者:行者123 更新时间:2023-12-05 07:36:16 25 4
gpt4 key购买 nike

我目前正在编写我的第一个 Shiny 应用程序,但我在使用一些更微妙的用户界面功能时遇到了一些困难。我正在使用 tcltk 库导入一些简单的对话框,供用户选择本地目录和文件(该应用程序只会在本地运行,所以我不会使用 shiny 的 fileInput 命令)。这也具有不像 choose.dir 命令那样特定于操作系统的优点(有关更多讨论,请参阅 R Windows OS choose.dir() File chooser won't open at working directory)。

但是,当我在 Windows 中工作时(我在 Windows 10 上进行测试,尽管我在 Linux 中完成大部分开发工作),我发现调用 tkchooseDirectory 只会打开 Shiny 应用程序后面的对话框,如果我正在运行一个 Shiny 的应用程序,或者如果我只是从那里的控制台调用它,则在 RStudio IDE 后面。这似乎不是一个新问题:http://r.789695.n4.nabble.com/tkchooseDirectory-opens-dialog-below-browser-window-td4729500.html但我还没有看到任何解决方案。

对于我使用 RStudio 控制台进行的开发工作,这是一个小麻烦,但是,考虑到 Shiny 的应用程序最终将交付给客户(国家机构),我真的不想通过隐藏对话框来加重它们由应用程序。

感谢您提供的任何帮助!

[edit 1] 更多信息:似乎从 RStudio 控制台调用 tkchooseDirectory 时,只有第一次调用 tkchooseDirectory 会导致在应用程序后面显示一个对话框。后续调用按预期将对话框放置在显示的顶部。此外,这种行为不会发生在 R for Windows GUI 中,并且似乎是 RStudio 及其相关产品所特有的。

[edit 2] 看来其他人也遇到过与其他 tcltk 库对话框类似的问题:MessageBox in R

[编辑 3] 最简单的最小示例是运行:

library(tcltk2)
tkchooseDirectory()

在 Windows 10 系统上的 RStudio 控制台中。

最佳答案

所以,不幸的是,我认为没有直接的解决方案...

一个选项是打开一个toplevel 窗口,然后是它上面的目录对话框(你必须在这里一次运行所有的东西,否则root 在再次作为背景)。

library(tcltk2)

root = tktoplevel("width" = 1, "height" = 1)
tkraise(root)
tkchooseDirectory("-parent", root)

另一种选择是使用 gWidgets

dir_ <- gWidgets::gfile(type = "selectdir")

关于r - tcltk 对话框出现在 RStudio/Shiny Windows 下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49193678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com