Hi everyone, I am trying to add a gtkProgressBar
to a little interface I created for an R script (using the RGtk2
package).
If I do something simple, as:
for (i in 1:50)
{
gtkProgressBarSetFraction(progress, i/50)
Sys.sleep(1)
}
everything runs smoothly and the bar is updated every second.
However, when I go to my actual code, I have a loop in which I do something like
for(i in 1:1000)
{
gtkProgressBarSetFraction(progress, i/1000)
#do some heavy computation here
}
The problem here is that the interface "freezes" and the progress bar is only updated at the end of the loop, therefore defeating completely its use...
Am I missing something here? How can I periodically "wake up" the interface so that it refreshes?
Thank you nico
EDIT: OK, I solved the problem, but I still don't understand what is going on. I added a Sys.sleep
call after the gtkProgressBarSetFraction
and now the interface updates happily. To reduce "wasted time" I just did Sys.sleep(0.0001)
(so for 1000 cycles I would only have ~0.1-1s more computing time, which is acceptable). Anyone could explain why is this happening?