gpt4 book ai didi

r - RGtk2 中的 gtkProgressBar

转载 作者:行者123 更新时间:2023-12-01 09:38:23 25 4
gpt4 key购买 nike

我正在尝试将 gtkProgressBar 添加到我为 R 脚本创建的小界面(使用 RGtk2 包)。

如果我做一些简单的事情,比如:

for (i in 1:50)
{
gtkProgressBarSetFraction(progress, i/50)
Sys.sleep(1)
}

一切运行顺利,栏每秒更新一次。

但是,当我转到我的实际代码时,我有一个循环,我在其中执行类似的操作

for(i in 1:1000)
{
gtkProgressBarSetFraction(progress, i/1000)
#do some heavy computation here
}

这里的问题是界面“卡住”并且进度条仅在循环结束时更新,因此完全无法使用...

我在这里遗漏了什么吗?如何定期“唤醒”界面以使其刷新?

谢谢妮可

编辑:好的,我解决了问题,但我仍然不明白发生了什么。我在 gtkProgressBarSetFraction 之后添加了一个 Sys.sleep 调用,现在界面更新愉快。为了减少“浪费时间”,我只是做了 Sys.sleep(0.0001) (所以对于 1000 个周期,我只会多出约 0.1-1 秒的计算时间,这是可以接受的)。任何人都可以解释为什么会发生这种情况?

最佳答案

处理一个事件:gtkMainIterationDo(FALSE)。处理所有未决事件:while(gtkEventsPending()) gtkMainIteration().

由于 R 和 Gtk 事件循环交互的方式,需要此代码 - 在每一点,R 或 Gtk 都处于控制之中,并且需要手动将控制权移交给另一个。 Sys.sleep 是一种方法,这些 RGtk2 特定功能是另一种方法。

关于r - RGtk2 中的 gtkProgressBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3820402/

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